Commit 2880d86d67c941d514e7ad6aaf1943dc9d80554c
1 parent
ad3960a3
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Merge with Marcelo's code
Showing
14 changed files
with
616 additions
and
96 deletions
Show diff stats
plugins/community_hub/controllers/public/community_hub_plugin_public_controller.rb
@@ -2,33 +2,177 @@ class CommunityHubPluginPublicController < PublicController | @@ -2,33 +2,177 @@ class CommunityHubPluginPublicController < PublicController | ||
2 | 2 | ||
3 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') | 3 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') |
4 | 4 | ||
5 | - #layout false | 5 | + layout false |
6 | + | ||
6 | 7 | ||
7 | def newer_comments | 8 | def newer_comments |
8 | - posts = Comment.find(:all) | ||
9 | - #render :text => posts_to_json(posts), :content_type => 'text/plain' | ||
10 | - render :partial => "post", :collection => posts | 9 | + latest_post = params[:latest_post] |
10 | + hub = params[:hub] | ||
11 | + posts = Comment.find(:all, | ||
12 | + :order => "id desc", | ||
13 | + :conditions => ["id > ?", latest_post]) | ||
14 | + | ||
15 | + if !posts.empty? | ||
16 | + oldest_post = posts.last.id | ||
17 | + latest_post = posts.first.id | ||
18 | + else | ||
19 | + oldest_post = 0 | ||
20 | + latest_post = 0 | ||
21 | + end | ||
22 | + | ||
23 | + #raise hub.inspect | ||
24 | + | ||
25 | + render :partial => "post", | ||
26 | + :collection => posts, | ||
27 | + :locals => { | ||
28 | + :latest_post => latest_post, | ||
29 | + :oldest_post => oldest_post, | ||
30 | + :hub => hub | ||
31 | + } | ||
11 | end | 32 | end |
12 | 33 | ||
34 | + | ||
35 | + def newer_articles | ||
36 | + latest_post = params[:latest_post] | ||
37 | + hub = params[:hub] | ||
38 | + posts = Article.find(:all, | ||
39 | + :order => "id desc", | ||
40 | + :conditions => ["id > :id and type = :type and parent_id = :hub", { | ||
41 | + :id => latest_post, | ||
42 | + :type => 'TinyMceArticle', | ||
43 | + :hub => hub | ||
44 | + }]) | ||
45 | + | ||
46 | + if !posts.empty? | ||
47 | + oldest_post = posts.last.id | ||
48 | + latest_post = posts.first.id | ||
49 | + else | ||
50 | + oldest_post = 0 | ||
51 | + latest_post = 0 | ||
52 | + end | ||
53 | + | ||
54 | + render :partial => "post", | ||
55 | + :collection => posts, | ||
56 | + :locals => { | ||
57 | + :latest_post => latest_post, | ||
58 | + :oldest_post => oldest_post, | ||
59 | + :hub => hub | ||
60 | + } | ||
61 | + end | ||
62 | + | ||
63 | + | ||
13 | def more_comments | 64 | def more_comments |
14 | @posts = Comment.find(:all) | 65 | @posts = Comment.find(:all) |
15 | render :partial => "post", :collection => @posts | 66 | render :partial => "post", :collection => @posts |
16 | end | 67 | end |
17 | 68 | ||
18 | - def newer_articles | ||
19 | - posts = Article.find(:all, :conditions => {:type => 'TinyMceArticle'}, :limit => 3) | ||
20 | - render :partial => "post", :collection => posts | ||
21 | - end | 69 | + |
22 | 70 | ||
23 | def settings | 71 | def settings |
24 | settings_section = params[:id] | 72 | settings_section = params[:id] |
25 | - #raise settings_section.inspect | ||
26 | render :partial => "settings/twitter", :layout => true | 73 | render :partial => "settings/twitter", :layout => true |
27 | end | 74 | end |
28 | 75 | ||
76 | + | ||
77 | + def set_hub_view | ||
78 | + hub = Article.find(params[:hub]) | ||
79 | + hub_owner = hub.profile | ||
80 | + role = params[:role] | ||
81 | + render :partial => "post_form", :locals => {:hub => hub, :profile => user, :user_role => role} | ||
82 | + end | ||
83 | + | ||
84 | + | ||
85 | + def check_user_level | ||
86 | + if false | ||
87 | + render :text => {'level' => 0}.to_json, :content_type => 'application/json' | ||
88 | + else | ||
89 | + render :text => {'level' => 1}.to_json, :content_type => 'application/json' | ||
90 | + end | ||
91 | + end | ||
92 | + | ||
93 | + | ||
94 | + def remove_live_post | ||
95 | + | ||
96 | + begin | ||
97 | + post = Comment.find(params[:id]) | ||
98 | + rescue | ||
99 | + post = nil | ||
100 | + end | ||
101 | + | ||
102 | + if post && post.destroy | ||
103 | + render :text => {'ok' => true}.to_json, :content_type => 'application/json' | ||
104 | + else | ||
105 | + render :text => {'ok' => false}.to_json, :content_type => 'application/json' | ||
106 | + end | ||
107 | + | ||
108 | + end | ||
109 | + | ||
110 | + | ||
111 | + def promote_live_post | ||
112 | + | ||
113 | + post_id = params[:id] | ||
114 | + user_id = params[:user].to_i | ||
115 | + | ||
116 | + hub = Article.find(params[:hub]) | ||
117 | + | ||
118 | + hub.promoted_users += [user_id] unless hub.promoted_users.include?(user_id) | ||
119 | + | ||
120 | + if hub && hub.save | ||
121 | + render :text => {'ok' => true}.to_json, :content_type => 'application/json' | ||
122 | + else | ||
123 | + render :text => {'ok' => false}.to_json, :content_type => 'application/json' | ||
124 | + end | ||
125 | + end | ||
126 | + | ||
127 | + | ||
128 | + def pin_live_post | ||
129 | + | ||
130 | + begin | ||
131 | + post = Comment.find(params[:id]) | ||
132 | + rescue | ||
133 | + post = nil | ||
134 | + end | ||
135 | + | ||
136 | + hub = Article.find(params[:hub]) | ||
137 | + | ||
138 | + hub.pinned_posts += [post.id] unless hub.pinned_posts.include?(post.id) | ||
139 | + | ||
140 | + if hub && hub.save | ||
141 | + render :text => {'ok' => true}.to_json, :content_type => 'application/json' | ||
142 | + else | ||
143 | + render :text => {'ok' => false}.to_json, :content_type => 'application/json' | ||
144 | + end | ||
145 | + end | ||
146 | + | ||
147 | + | ||
148 | + # | ||
149 | + # to implement.......... | ||
150 | + # | ||
151 | + def like_live_post | ||
152 | + if false | ||
153 | + render :text => {'ok' => true}.to_json, :content_type => 'application/json' | ||
154 | + else | ||
155 | + render :text => {'ok' => false}.to_json, :content_type => 'application/json' | ||
156 | + end | ||
157 | + end | ||
158 | + | ||
159 | + | ||
160 | + # | ||
161 | + # to implement.......... | ||
162 | + # | ||
163 | + def dislike_live_post | ||
164 | + if false | ||
165 | + render :text => {'ok' => true}.to_json, :content_type => 'application/json' | ||
166 | + else | ||
167 | + render :text => {'ok' => false}.to_json, :content_type => 'application/json' | ||
168 | + end | ||
169 | + end | ||
170 | + | ||
171 | + | ||
29 | protected | 172 | protected |
30 | 173 | ||
31 | def posts_to_json(list) | 174 | def posts_to_json(list) |
175 | + | ||
32 | list.map do |item| { | 176 | list.map do |item| { |
33 | 'id' => item.id, | 177 | 'id' => item.id, |
34 | 'created_at' => item.created_at, | 178 | 'created_at' => item.created_at, |
@@ -38,6 +182,4 @@ class CommunityHubPluginPublicController < PublicController | @@ -38,6 +182,4 @@ class CommunityHubPluginPublicController < PublicController | ||
38 | end.to_json | 182 | end.to_json |
39 | end | 183 | end |
40 | 184 | ||
41 | - | ||
42 | - | ||
43 | end | 185 | end |
44 | \ No newline at end of file | 186 | \ No newline at end of file |
plugins/community_hub/lib/community_hub_plugin/hub.rb
1 | +require File.dirname(__FILE__) + '/../../tweeter_stream/lib/twurl' | ||
2 | + | ||
1 | class CommunityHubPlugin::Hub < Folder | 3 | class CommunityHubPlugin::Hub < Folder |
2 | 4 | ||
3 | settings_items :hashtags_twitter, :type => :string, :default => "" | 5 | settings_items :hashtags_twitter, :type => :string, :default => "" |
6 | + settings_items :promoted_users, :type => Array, :default => [] | ||
7 | + settings_items :pinned_posts, :type => Array, :default => [] | ||
4 | 8 | ||
9 | + def initialize(my_var) | ||
10 | + raise "ola".inspect | ||
11 | + end | ||
12 | + | ||
5 | def self.icon_name(article = nil) | 13 | def self.icon_name(article = nil) |
6 | 'community-hub' | 14 | 'community-hub' |
7 | end | 15 | end |
plugins/community_hub/lib/community_hub_plugin/hub_helper.rb
0 → 100644
@@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
1 | +module CommunityHubPlugin::HubHelper | ||
2 | + | ||
3 | + def post_css_classes(post_id, latest_post_id, oldest_post_id) | ||
4 | + classes = "post" | ||
5 | + | ||
6 | + if post_id == latest_post_id | ||
7 | + classes += " latest" | ||
8 | + end | ||
9 | + | ||
10 | + if post_id == oldest_post_id | ||
11 | + classes += " oldest" | ||
12 | + end | ||
13 | + | ||
14 | + classes | ||
15 | + end | ||
16 | + | ||
17 | + def mediator?(hub) | ||
18 | + true | ||
19 | + end | ||
20 | + | ||
21 | +end | ||
0 | \ No newline at end of file | 22 | \ No newline at end of file |
plugins/community_hub/public/javascripts/community_hub.js
1 | var $ = jQuery; | 1 | var $ = jQuery; |
2 | +var latest_post_id = 0; | ||
3 | +var oldest_post_id = 0; | ||
4 | + | ||
5 | + | ||
6 | +function hub_open_loading() { | ||
7 | + var html = '<div id="hub-loading">' + | ||
8 | + '<img src="/images/loading-small.gif" />' + | ||
9 | + '</div>'; | ||
10 | + | ||
11 | + $('.hub .form .submit').after(html); | ||
12 | + $('#hub-loading').fadeIn('slow'); | ||
13 | +} | ||
14 | + | ||
15 | + | ||
16 | +function hub_close_loading() { | ||
17 | + $('#hub-loading').fadeOut('slow', function() { | ||
18 | + $('#hub-loading').remove(); | ||
19 | + }); | ||
20 | +} | ||
21 | + | ||
2 | 22 | ||
3 | function send_message_for_stream(button) { | 23 | function send_message_for_stream(button) { |
4 | - var $ = jQuery; | ||
5 | - open_loading(DEFAULT_LOADING_MESSAGE); | 24 | + |
6 | var $button = $(button); | 25 | var $button = $(button); |
7 | var form = $button.parents("form"); | 26 | var form = $button.parents("form"); |
8 | - $button.addClass('stream-post-button-loading'); | ||
9 | - $.post(form.attr("action"), form.serialize(), function(data) { | ||
10 | - if(data.render_target == null) { | ||
11 | - } | ||
12 | - else if(data.render_target == 'form') { | ||
13 | - } | ||
14 | - else if($('#' + data.render_target).size() > 0) { | ||
15 | - } | ||
16 | - else { | ||
17 | - form.find("input[type='text']").add('textarea').each(function() { | ||
18 | - this.value = ''; | ||
19 | - }); | ||
20 | - } | ||
21 | 27 | ||
22 | - close_loading(); | ||
23 | - $button.removeClass('stream-post-button-loading'); | ||
24 | - $button.enable(); | 28 | + hub_open_loading(); |
29 | + | ||
30 | + $.post(form.attr("action"), form.serialize(), function(data) { | ||
31 | + console.log(data); | ||
32 | + $("#comment_body").val(''); | ||
33 | + hub_close_loading(); | ||
25 | }, 'json'); | 34 | }, 'json'); |
26 | } | 35 | } |
27 | 36 | ||
@@ -31,19 +40,9 @@ function send_post_for_mediation(button) { | @@ -31,19 +40,9 @@ function send_post_for_mediation(button) { | ||
31 | var $button = $(button); | 40 | var $button = $(button); |
32 | var form = $button.parents("form"); | 41 | var form = $button.parents("form"); |
33 | $button.addClass('stream-post-button-loading'); | 42 | $button.addClass('stream-post-button-loading'); |
43 | + setMediationTimestamp(); | ||
34 | $.post(form.attr("action"), form.serialize(), function(data) { | 44 | $.post(form.attr("action"), form.serialize(), function(data) { |
35 | - if(data.render_target == null) { | ||
36 | - } | ||
37 | - else if(data.render_target == 'form') { | ||
38 | - } | ||
39 | - else if($('#' + data.render_target).size() > 0) { | ||
40 | - } | ||
41 | - else { | ||
42 | - form.find("input[type='text']").add('textarea').each(function() { | ||
43 | - this.value = ''; | ||
44 | - }); | ||
45 | - } | ||
46 | - | 45 | + tinymce.get('article_body').setContent(''); |
47 | close_loading(); | 46 | close_loading(); |
48 | $button.removeClass('stream-post-button-loading'); | 47 | $button.removeClass('stream-post-button-loading'); |
49 | $button.enable(); | 48 | $button.enable(); |
@@ -57,7 +56,8 @@ function clearMediationForm(element) { | @@ -57,7 +56,8 @@ function clearMediationForm(element) { | ||
57 | function setMediationTimestamp() { | 56 | function setMediationTimestamp() { |
58 | var now = new Date().getTime(); | 57 | var now = new Date().getTime(); |
59 | var timestamp = 'hub-mediation-' + now.toString(); | 58 | var timestamp = 'hub-mediation-' + now.toString(); |
60 | - $("article_name").value = timestamp; | 59 | + $("#article_name").val(timestamp); |
60 | + console.log('teste!!!!!!!!!!!'); | ||
61 | } | 61 | } |
62 | 62 | ||
63 | function loadPosts(section) { | 63 | function loadPosts(section) { |
@@ -89,19 +89,115 @@ function loadPosts(section) { | @@ -89,19 +89,115 @@ function loadPosts(section) { | ||
89 | } | 89 | } |
90 | 90 | ||
91 | function hub() { | 91 | function hub() { |
92 | - loadPosts('live'); | ||
93 | - loadPosts('mediation'); | 92 | + //checkNewPosts('live'); |
93 | + //checkNewPosts('mediation'); | ||
94 | } | 94 | } |
95 | 95 | ||
96 | -function checkNewPosts() { | ||
97 | - var agora = new Date(); | ||
98 | - console.log( 'checking news posts...' ); | 96 | +function checkNewPosts(postType) { |
97 | + | ||
98 | + var url = ''; | ||
99 | + var container; | ||
100 | + | ||
101 | + console.log(postType); | ||
102 | + | ||
103 | + switch (postType) { | ||
104 | + case 'live': | ||
105 | + url = '/plugin/community_hub/public/newer_comments'; | ||
106 | + container = $("#live-posts"); | ||
107 | + break; | ||
108 | + case 'mediation': | ||
109 | + url = '/plugin/community_hub/public/newer_articles'; | ||
110 | + container = $("#mediation-posts"); | ||
111 | + break; | ||
112 | + } | ||
113 | + | ||
114 | + var hub_id = $(".hub").attr('id'); | ||
115 | + var now = new Date(); | ||
116 | + | ||
117 | + $.ajax({ | ||
118 | + url: url, | ||
119 | + type: 'get', | ||
120 | + data: { latest_post: latest_post_id, hub: hub_id }, | ||
121 | + success: function(data) { | ||
122 | + | ||
123 | + if (data.trim().length > 0) { | ||
124 | + container.prepend(data); | ||
125 | + latest_post_id = $(".latest").attr("id"); | ||
126 | + | ||
127 | + } | ||
128 | + else { | ||
129 | + console.log('No more live posts!'); | ||
130 | + } | ||
131 | + | ||
132 | + }, | ||
133 | + error: function(ajax, stat, errorThrown) { | ||
134 | + console.log(stat); | ||
135 | + } | ||
136 | + }); | ||
137 | + | ||
99 | } | 138 | } |
100 | 139 | ||
101 | function toogleAutoScrolling() { | 140 | function toogleAutoScrolling() { |
102 | alert($("#auto_scrolling").attr('checked')); | 141 | alert($("#auto_scrolling").attr('checked')); |
103 | } | 142 | } |
104 | 143 | ||
144 | +function setHubView(role) { | ||
145 | + | ||
146 | + var hub_id = $(".hub").attr('id'); | ||
147 | + | ||
148 | + $.ajax({ | ||
149 | + url: '/plugin/community_hub/public/set_hub_view', | ||
150 | + type: 'get', | ||
151 | + data: { hub: hub_id, role: role }, | ||
152 | + success: function(data) { | ||
153 | + $(".form").html(data); | ||
154 | + console.log( data ); | ||
155 | + }, | ||
156 | + error: function(ajax, stat, errorThrown) { | ||
157 | + console.log( 'ERRO ao processar requisição!'); | ||
158 | + } | ||
159 | + }); | ||
160 | + | ||
161 | +} | ||
162 | + | ||
163 | + | ||
164 | +function checkUserLevel() { | ||
165 | + | ||
166 | + var hub_id = $(".hub").attr('id'); | ||
167 | + | ||
168 | + $.ajax({ | ||
169 | + url: '/plugin/community_hub/public/check_user_level', | ||
170 | + type: 'get', | ||
171 | + dataType: 'json', | ||
172 | + data: { hub: hub_id }, | ||
173 | + success: function(data) { | ||
174 | + | ||
175 | + | ||
176 | + switch (data.level) { | ||
177 | + | ||
178 | + case -1: | ||
179 | + console.log( 'usuário não logado...' ); | ||
180 | + setHubView('guest'); | ||
181 | + break; | ||
182 | + case 0: | ||
183 | + console.log( 'usuário logado, visitante...'); | ||
184 | + setHubView('visitor'); | ||
185 | + break; | ||
186 | + case 1: | ||
187 | + console.log( 'usuário logado, mediador...'); | ||
188 | + setHubView('mediator'); | ||
189 | + break; | ||
190 | + } | ||
191 | + | ||
192 | + | ||
193 | + }, | ||
194 | + error: function(ajax, stat, errorThrown) { | ||
195 | + console.log( 'ERRO ao processar requisição!'); | ||
196 | + } | ||
197 | + }); | ||
198 | + | ||
199 | +} | ||
200 | + | ||
105 | $(document).ready(function(){ | 201 | $(document).ready(function(){ |
106 | 202 | ||
107 | $("#auto_scrolling").click(function(){ | 203 | $("#auto_scrolling").click(function(){ |
@@ -109,7 +205,147 @@ $(document).ready(function(){ | @@ -109,7 +205,147 @@ $(document).ready(function(){ | ||
109 | }); | 205 | }); |
110 | 206 | ||
111 | hub(); | 207 | hub(); |
112 | - checkNewPosts('live'); | 208 | + |
209 | + //checkUserLevel(); | ||
210 | + | ||
211 | + //setInterval(checkNewLivePosts, 10000); //10 seconds interval | ||
212 | + setInterval(checkNewMediationPosts, 10000); //10 seconds interval | ||
213 | + //setInterval(checkUserLevel, 10000); //10 seconds interval | ||
113 | 214 | ||
114 | }); | 215 | }); |
115 | 216 | ||
217 | + | ||
218 | +function checkNewLivePosts() { | ||
219 | + checkNewPosts('live'); | ||
220 | +} | ||
221 | + | ||
222 | + | ||
223 | +function checkNewMediationPosts() { | ||
224 | + checkNewPosts('mediation'); | ||
225 | +} | ||
226 | + | ||
227 | + | ||
228 | +function removeLivePost(post_id) { | ||
229 | + | ||
230 | + $.ajax({ | ||
231 | + url: '/plugin/community_hub/public/remove_live_post', | ||
232 | + type: 'get', | ||
233 | + dataType: 'json', | ||
234 | + data: { id: post_id }, | ||
235 | + success: function(data) { | ||
236 | + | ||
237 | + if (data.ok) { | ||
238 | + console.log( 'OK - Post removido!'); | ||
239 | + } | ||
240 | + else { | ||
241 | + console.log( 'NOT OK - Post NÃO removido!'); | ||
242 | + } | ||
243 | + | ||
244 | + }, | ||
245 | + error: function(ajax, stat, errorThrown) { | ||
246 | + console.log( 'ERRO ao processar requisição!'); | ||
247 | + } | ||
248 | + }); | ||
249 | + | ||
250 | +} | ||
251 | + | ||
252 | + | ||
253 | +function promoteLivePost(post_id, user_id) { | ||
254 | + | ||
255 | + var hub_id = $(".hub").attr('id'); | ||
256 | + | ||
257 | + $.ajax({ | ||
258 | + url: '/plugin/community_hub/public/promote_live_post', | ||
259 | + type: 'get', | ||
260 | + dataType: 'json', | ||
261 | + data: { id: post_id, user: user_id, hub: hub_id }, | ||
262 | + success: function(data) { | ||
263 | + | ||
264 | + if (data.ok) { | ||
265 | + console.log( 'OK - Post promovido!'); | ||
266 | + } | ||
267 | + else { | ||
268 | + console.log( 'NOT OK - Post NÃO promovido!'); | ||
269 | + } | ||
270 | + | ||
271 | + }, | ||
272 | + error: function(ajax, stat, errorThrown) { | ||
273 | + console.log( 'ERRO ao processar requisição!'); | ||
274 | + } | ||
275 | + }); | ||
276 | + | ||
277 | +} | ||
278 | + | ||
279 | +function pinLivePost(post_id) { | ||
280 | + | ||
281 | + var hub_id = $(".hub").attr('id'); | ||
282 | + | ||
283 | + $.ajax({ | ||
284 | + url: '/plugin/community_hub/public/pin_live_post', | ||
285 | + type: 'get', | ||
286 | + dataType: 'json', | ||
287 | + data: { id: post_id, hub: hub_id }, | ||
288 | + success: function(data) { | ||
289 | + | ||
290 | + if (data.ok) { | ||
291 | + console.log( 'OK - Post fixado!'); | ||
292 | + } | ||
293 | + else { | ||
294 | + console.log( 'NOT OK - Post NÃO fixado!'); | ||
295 | + } | ||
296 | + | ||
297 | + }, | ||
298 | + error: function(ajax, stat, errorThrown) { | ||
299 | + console.log( 'ERRO ao processar requisição!'); | ||
300 | + } | ||
301 | + }); | ||
302 | + | ||
303 | +} | ||
304 | + | ||
305 | +function likeLivePost(post_id) { | ||
306 | + | ||
307 | + $.ajax({ | ||
308 | + url: '/plugin/community_hub/public/like_live_post', | ||
309 | + type: 'get', | ||
310 | + dataType: 'json', | ||
311 | + data: { id: post_id }, | ||
312 | + success: function(data) { | ||
313 | + | ||
314 | + if (data.ok) { | ||
315 | + console.log( 'OK - Post curtido!'); | ||
316 | + } | ||
317 | + else { | ||
318 | + console.log( 'NOT OK - Post NÃO curtido!'); | ||
319 | + } | ||
320 | + | ||
321 | + }, | ||
322 | + error: function(ajax, stat, errorThrown) { | ||
323 | + console.log( 'ERRO ao processar requisição!'); | ||
324 | + } | ||
325 | + }); | ||
326 | + | ||
327 | +} | ||
328 | + | ||
329 | +function dislikeLivePost(post_id) { | ||
330 | + | ||
331 | + $.ajax({ | ||
332 | + url: '/plugin/community_hub/public/dislike_live_post', | ||
333 | + type: 'get', | ||
334 | + dataType: 'json', | ||
335 | + data: { id: post_id }, | ||
336 | + success: function(data) { | ||
337 | + | ||
338 | + if (data.ok) { | ||
339 | + console.log( 'OK - Post descurtido!'); | ||
340 | + } | ||
341 | + else { | ||
342 | + console.log( 'NOT OK - Post NÃO descurtido!'); | ||
343 | + } | ||
344 | + | ||
345 | + }, | ||
346 | + error: function(ajax, stat, errorThrown) { | ||
347 | + console.log( 'ERRO ao processar requisição!'); | ||
348 | + } | ||
349 | + }); | ||
350 | + | ||
351 | +} | ||
116 | \ No newline at end of file | 352 | \ No newline at end of file |
plugins/community_hub/public/style.css
1 | +#hub-loading { | ||
2 | + margin-top: 18px; | ||
3 | + float: right; | ||
4 | +} | ||
5 | + | ||
1 | .icon-newcommunity-hub, | 6 | .icon-newcommunity-hub, |
2 | .icon-community-hub { | 7 | .icon-community-hub { |
3 | background-image: url(/plugins/community_hub/icons/community-hub.png) | 8 | background-image: url(/plugins/community_hub/icons/community-hub.png) |
plugins/community_hub/tweeter_stream/lib/twurl/newjson.json
0 → 100644
plugins/community_hub/tweeter_stream/lib/twurl/request_controller.rb
@@ -13,8 +13,15 @@ module Twurl | @@ -13,8 +13,15 @@ module Twurl | ||
13 | 13 | ||
14 | def perform_request | 14 | def perform_request |
15 | client.perform_request_from_options(options) { |response| | 15 | client.perform_request_from_options(options) { |response| |
16 | - response.read_body { |chunk| parsed = JSON.parse(chunk) | ||
17 | - print parsed["text"] + "\n" | 16 | + response.read_body { |chunk| |
17 | +# print "#{chunk}\n" | ||
18 | + #unless chunk.to_i.length = 0 | ||
19 | + begin | ||
20 | + parsed = JSON.parse(chunk) | ||
21 | + print "@#{parsed["user"]["name"]} said: #{parsed["text"]} \n" | ||
22 | + rescue | ||
23 | + end | ||
24 | + #end | ||
18 | } | 25 | } |
19 | } | 26 | } |
20 | rescue URI::InvalidURIError | 27 | rescue URI::InvalidURIError |
plugins/community_hub/tweeter_stream/lib/twurl/stream.rb
@@ -20,9 +20,7 @@ module Twurl | @@ -20,9 +20,7 @@ module Twurl | ||
20 | Twurl.options.command = 'request' # Not necessary anymore | 20 | Twurl.options.command = 'request' # Not necessary anymore |
21 | Twurl.options.data = {"track"=>tags} | 21 | Twurl.options.data = {"track"=>tags} |
22 | # Twurl.options.proxy = 'http://161.148.1.167:312' # Use for production mode at SERPRO | 22 | # Twurl.options.proxy = 'http://161.148.1.167:312' # Use for production mode at SERPRO |
23 | - if !proxy.nil? | ||
24 | - Twurl.options.proxy = proxy | ||
25 | - end | 23 | + Twurl.options.proxy = proxy unless proxy.nil? |
26 | Twurl.options.trace = false | 24 | Twurl.options.trace = false |
27 | Twurl.options.headers = {} | 25 | Twurl.options.headers = {} |
28 | Twurl.options.subcommands=[] | 26 | Twurl.options.subcommands=[] |
plugins/community_hub/tweeter_stream/nbproject/private/private.xml
0 → 100644
plugins/community_hub/tweeter_stream/noosfero.rb
1 | #!/usr/bin/env ruby | 1 | #!/usr/bin/env ruby |
2 | +require 'rubygems' # if you use RubyGems | ||
3 | + | ||
2 | require File.dirname(__FILE__) + '/lib/twurl' | 4 | require File.dirname(__FILE__) + '/lib/twurl' |
3 | 5 | ||
4 | -Twurl::Stream.run('nba', '/root/.twurlrc') | 6 | +Twurl::Stream.run('popcorntime,time4popcorn', '/root/.twurlrc') |
plugins/community_hub/views/community_hub_plugin_public/_post.rhtml
1 | -<li class="post" style="border:1px solid black;"> | 1 | +<% extend CommunityHubPlugin::HubHelper %> |
2 | +<li id="<%= post.id %>" class="<%=post_css_classes(post.id, latest_post, oldest_post)%>"> | ||
2 | 3 | ||
3 | - <ul style="border:1px solid red;"> | ||
4 | - <li class="time" style="border:1px solid red;"> | 4 | + <ul> |
5 | + <li class="time"> | ||
5 | <%= show_time(post.created_at) %> | 6 | <%= show_time(post.created_at) %> |
6 | </li> | 7 | </li> |
7 | - <li class="avatar" style="border:1px solid red;"> | 8 | + <li class="avatar"> |
8 | 9 | ||
9 | - <% if false %> | ||
10 | - <%= image_tag(profile_icon(post.author, :minor)) %> | ||
11 | - <% end %> | ||
12 | - | ||
13 | - image | 10 | + <%= link_to image_tag(profile_icon(post.author, :minor)), |
11 | + post.author.url, | ||
12 | + :class => 'comment-picture1', | ||
13 | + :title => post.author_name | ||
14 | + %> | ||
14 | 15 | ||
15 | </li> | 16 | </li> |
16 | - <li class="message" style="border:1px solid red;"> | 17 | + <li class="message"> |
17 | <%= txt2html post.body %> | 18 | <%= txt2html post.body %> |
18 | </li> | 19 | </li> |
19 | - <li class="mediation-bar" style="border:1px solid red;"> | ||
20 | 20 | ||
21 | - <ul style="border:1px solid red;"> | ||
22 | - <li class="remove"> | ||
23 | - <%= link_to 'excluir', :controller => 'community_hub_plugin_public', :action => 'destroy', :id => post.id %> | ||
24 | - </li> | 21 | + <% if logged_in? %> |
22 | + | ||
23 | + <li class="mediation-bar"> | ||
24 | + | ||
25 | + <ul> | ||
26 | + <% if mediator?(hub) %> | ||
25 | <li class="promote"> | 27 | <li class="promote"> |
26 | - <%= link_to 'promover', :controller => 'community_hub_plugin_public', :action => 'destroy', :id => post.id %> | 28 | + <a id="<%= post.id %>" href="#" onclick="promoteLivePost(<%= post.id %>,<%= user.id %>); return false;"> |
29 | + <img src="/designs/icons/default/outras/16x16/actions/spread.png" /> | ||
30 | + </a> | ||
27 | </li> | 31 | </li> |
28 | - <li class="likes-dislikes"> | ||
29 | - <%= link_to 'gostei', :controller => 'community_hub_plugin_public', :action => 'destroy', :id => post.id %> | <%= link_to 'não gostei', :controller => 'community_hub_plugin_public', :action => 'destroy', :id => post.id %> | 32 | + <% end %> |
33 | + | ||
34 | + <li class="like"> | ||
35 | + <a id="<%= post.id %>" href="#" onclick="likeLivePost(<%= post.id %>); return false;"> | ||
36 | + <img src="/designs/icons/default/outras/16x16/actions/positive-hand.png" /> | ||
37 | + </a> | ||
30 | </li> | 38 | </li> |
39 | + <li class="dislike"> | ||
40 | + <a id="<%= post.id %>" href="#" onclick="dislikeLivePost(<%= post.id %>); return false;"> | ||
41 | + <img src="/designs/icons/default/outras/16x16/actions/negative-hand.png" /> | ||
42 | + </a> | ||
43 | + </li> | ||
44 | + | ||
45 | + <% if mediator?(hub) %> | ||
31 | <li class="pin"> | 46 | <li class="pin"> |
32 | - <%= link_to 'fixar', :controller => 'community_hub_plugin_public', :action => 'destroy', :id => post.id %> | 47 | + <a id="<%= post.id %>" href="#" onclick="pinLivePost(<%= post.id %>); return false;"> |
48 | + <img src="/designs/icons/default/outras/16x16/apps/tags.gif" /> | ||
49 | + </a> | ||
33 | </li> | 50 | </li> |
51 | + <% end %> | ||
52 | + | ||
34 | </ul> | 53 | </ul> |
35 | 54 | ||
36 | </li> | 55 | </li> |
56 | + | ||
57 | + <% end %> | ||
37 | </ul> | 58 | </ul> |
38 | 59 | ||
39 | </li> | 60 | </li> |
40 | \ No newline at end of file | 61 | \ No newline at end of file |
plugins/community_hub/views/community_hub_plugin_public/_post_form.rhtml
1 | <% if user_role == 'visitor' %> | 1 | <% if user_role == 'visitor' %> |
2 | 2 | ||
3 | <% remote_form_for( :comment, | 3 | <% remote_form_for( :comment, |
4 | - CommunityHubPlugin::HubStreamPost.new, | 4 | + Comment.new, |
5 | :url => { | 5 | :url => { |
6 | - :profile => profile.identifier, | 6 | + :profile => hub.profile.identifier, |
7 | :controller => 'comment', | 7 | :controller => 'comment', |
8 | :action => 'create', | 8 | :action => 'create', |
9 | - :id => @page.id | 9 | + :id => hub.id |
10 | }, | 10 | }, |
11 | :html => { :class => 'comment_form' } ) do |f| %> | 11 | :html => { :class => 'comment_form' } ) do |f| %> |
12 | 12 | ||
@@ -26,7 +26,7 @@ | @@ -26,7 +26,7 @@ | ||
26 | 26 | ||
27 | <% end %> | 27 | <% end %> |
28 | 28 | ||
29 | - <% if user_role == 'admin' %> | 29 | + <% if user_role == 'mediator' %> |
30 | 30 | ||
31 | <%= render :file => 'shared/tiny_mce' %> | 31 | <%= render :file => 'shared/tiny_mce' %> |
32 | 32 | ||
@@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
41 | :type => 'TinyMceArticle', | 41 | :type => 'TinyMceArticle', |
42 | :success_back_to => "", | 42 | :success_back_to => "", |
43 | :q => "", | 43 | :q => "", |
44 | - :parent_id => @page.id, | 44 | + :parent_id => hub.id, |
45 | :back_to => "" | 45 | :back_to => "" |
46 | }, | 46 | }, |
47 | :before => "tinymce.triggerSave(); setMediationTimestamp()", | 47 | :before => "tinymce.triggerSave(); setMediationTimestamp()", |
@@ -58,7 +58,7 @@ | @@ -58,7 +58,7 @@ | ||
58 | <%= f.hidden_field :allow_members_to_edit, :value => 0 %> | 58 | <%= f.hidden_field :allow_members_to_edit, :value => 0 %> |
59 | <%= f.hidden_field :abstract, :value => "" %> | 59 | <%= f.hidden_field :abstract, :value => "" %> |
60 | <%= f.hidden_field :display_hits, :value => 0 %> | 60 | <%= f.hidden_field :display_hits, :value => 0 %> |
61 | - <%= f.hidden_field :parent_id, :value => @page.id %> | 61 | + <%= f.hidden_field :parent_id, :value => hub.id %> |
62 | <%= f.hidden_field :name %> | 62 | <%= f.hidden_field :name %> |
63 | <%= f.hidden_field :published, :value => true %> | 63 | <%= f.hidden_field :published, :value => true %> |
64 | <%= f.hidden_field :license_id, :value => "" %> | 64 | <%= f.hidden_field :license_id, :value => "" %> |
@@ -73,7 +73,7 @@ | @@ -73,7 +73,7 @@ | ||
73 | :placeholder => _('Type your message for mediation here')) %> | 73 | :placeholder => _('Type your message for mediation here')) %> |
74 | </div> | 74 | </div> |
75 | <div> | 75 | <div> |
76 | - <%= submit_button('add', _('Post'))%> | 76 | + <%= submit_button('add', _('Post'), :onclick => "send_post_for_mediation(this); return false;")%> |
77 | </div> | 77 | </div> |
78 | </div> | 78 | </div> |
79 | 79 |
plugins/community_hub/views/community_hub_plugin_public/_settings.rhtml
@@ -2,10 +2,6 @@ | @@ -2,10 +2,6 @@ | ||
2 | <li class="twitter"> | 2 | <li class="twitter"> |
3 | <%= link_to _("Twitter settings"), :controller => 'cms', :action => 'edit', :id => @page.id %> | 3 | <%= link_to _("Twitter settings"), :controller => 'cms', :action => 'edit', :id => @page.id %> |
4 | </li> | 4 | </li> |
5 | - <li class="facebook"> | ||
6 | - <%= link_to _("Facebook settings"), :controller => 'cms', :action => 'edit', :id => @page.id %> | ||
7 | - </li> | ||
8 | - | ||
9 | <li class="general"> | 5 | <li class="general"> |
10 | <%= link_to _("General settings"), :controller => 'cms', :action => 'edit', :id => @page.id %> | 6 | <%= link_to _("General settings"), :controller => 'cms', :action => 'edit', :id => @page.id %> |
11 | </li> | 7 | </li> |
plugins/community_hub/views/content_viewer/hub.rhtml
1 | -<!-- HUB --> | ||
2 | -<div class="hub"> | 1 | +<% extend CommunityHubPlugin::HubHelper %> |
2 | + | ||
3 | +<%# CommunityHubPlugin::Hub.start_service %> | ||
4 | + | ||
5 | +<div id="<%=@page.id%>" class="hub"> | ||
3 | 6 | ||
4 | - <!-- HUB title --> | ||
5 | <div class="title"><%= @page.title %> HUB</div> | 7 | <div class="title"><%= @page.title %> HUB</div> |
6 | 8 | ||
7 | - <!-- HUB description --> | ||
8 | <div class="description"><%= @page.body %></div> | 9 | <div class="description"><%= @page.body %></div> |
9 | 10 | ||
10 | <br /> | 11 | <br /> |
11 | 12 | ||
12 | - <!-- HUB live section --> | ||
13 | <div class="live"> | 13 | <div class="live"> |
14 | <h1> | 14 | <h1> |
15 | <span class="title"><%= @page.title %></span><span class="on-air"><%= _("Live") %></span> | 15 | <span class="title"><%= @page.title %></span><span class="on-air"><%= _("Live") %></span> |
16 | </h1> | 16 | </h1> |
17 | <ul id="live-posts"> | 17 | <ul id="live-posts"> |
18 | </ul> | 18 | </ul> |
19 | - <span><%= check_box_tag 'auto_scrolling', 'yes', true %><%= _("Auto scrolling") %></span> | 19 | + <!--span><%= check_box_tag 'auto_scrolling', 'yes', true %><%= _("Auto scrolling") %></span--> |
20 | </div> | 20 | </div> |
21 | 21 | ||
22 | - <br /> | ||
23 | - | ||
24 | - <!-- HUB mediation section --> | ||
25 | <div class="mediation"> | 22 | <div class="mediation"> |
26 | <h1> | 23 | <h1> |
27 | - <span class="title"><%= _("Mediation") %><span class="expand">+</span></span> | 24 | + <span class="title"><%= _("Mediation") %><span class="expand">▼</span></span> |
28 | </h1> | 25 | </h1> |
29 | <ul id="mediation-posts"> | 26 | <ul id="mediation-posts"> |
30 | </ul> | 27 | </ul> |
@@ -32,13 +29,93 @@ | @@ -32,13 +29,93 @@ | ||
32 | 29 | ||
33 | <br /> | 30 | <br /> |
34 | 31 | ||
35 | - <!-- HUB post form (guest user) & (admin user) --> | 32 | + <% if logged_in? %> |
33 | + | ||
36 | <div class="form"> | 34 | <div class="form"> |
37 | - <%= render :partial => "community_hub_plugin_public/post_form", :locals => {:user_role => 'admin'} %> | 35 | + |
36 | + <% if !mediator?(@page.id) %> | ||
37 | + | ||
38 | + <form action="/profile/<%=profile.identifier%>/comment/create/<%=@page.id%>" | ||
39 | + class="comment_form" | ||
40 | + method="post"> | ||
41 | + | ||
42 | + <div> | ||
43 | + <span>Streaming</span> | ||
44 | + </div> | ||
45 | + <div> | ||
46 | + <textarea cols="38" | ||
47 | + id="comment_body" | ||
48 | + name="comment[body]" | ||
49 | + placeholder="Type your message here" | ||
50 | + rows="10" | ||
51 | + style="width: 99%;"></textarea> | ||
52 | + </div> | ||
53 | + <div> | ||
54 | + <input class="button with-text icon-add submit" | ||
55 | + name="commit" | ||
56 | + onclick="send_message_for_stream(this); return false;" | ||
57 | + type="submit" | ||
58 | + value="Post"> | ||
59 | + </div> | ||
60 | + | ||
61 | + </form> | ||
62 | + | ||
63 | + <% end %> | ||
64 | + | ||
65 | + <% if mediator?(@page.id) %> | ||
66 | + | ||
67 | + <%= render :file => 'shared/tiny_mce' %> | ||
68 | + | ||
69 | + <% category_ids = [] %> | ||
70 | + | ||
71 | + <form action="/myprofile/<%=profile.identifier%>/cms/new?back_to=&parent_id=<%=@page.id%>&q=&success_back_to=&type=TinyMceArticle" | ||
72 | + class="comment_form" | ||
73 | + method="post"> | ||
74 | + | ||
75 | + <input id="article_moderate_comments" name="article[moderate_comments]" type="hidden" value="0" /> | ||
76 | + <input id="article_translation_of_id" name="article[translation_of_id]" type="hidden" value="" /> | ||
77 | + <input id="article_notify_comments" name="article[notify_comments]" type="hidden" value="0" /> | ||
78 | + <input id="article_accept_comments" name="article[accept_comments]" type="hidden" value="1" /> | ||
79 | + <input id="article_tag_list" name="article[tag_list]" type="hidden" value="" /> | ||
80 | + <input id="article_display_versions" name="article[display_versions]" type="hidden" value="0" /> | ||
81 | + <input id="article_allow_members_to_edit" name="article[allow_members_to_edit]" type="hidden" value="0" /> | ||
82 | + <input id="article_abstract" name="article[abstract]" type="hidden" value="" /> | ||
83 | + <input id="article_display_hits" name="article[display_hits]" type="hidden" value="0" /> | ||
84 | + <input id="article_parent_id" name="article[parent_id]" type="hidden" value="446" /> | ||
85 | + <input id="article_name" name="article[name]" type="hidden" /> | ||
86 | + <input id="article_published" name="article[published]" type="hidden" value="true" /> | ||
87 | + <input id="article_license_id" name="article[license_id]" type="hidden" value="" /> | ||
88 | + <input id="article_category_ids_" name="article[category_ids][]" type="hidden" value="" /> | ||
89 | + <input id="article_language" name="article[language]" type="hidden" value="en" /> | ||
90 | + | ||
91 | + <textarea class="mceEditor" | ||
92 | + cols="40" | ||
93 | + id="article_body" | ||
94 | + name="article[body]" | ||
95 | + placeholder="Type your message for mediation here" | ||
96 | + rows="20" | ||
97 | + style="width: 99%;" | ||
98 | + aria-hidden="true"> | ||
99 | + </textarea> | ||
100 | + | ||
101 | + <input class="button with-text icon-add submit" | ||
102 | + name="commit" | ||
103 | + onclick="send_post_for_mediation(this); return false;" | ||
104 | + type="submit" | ||
105 | + value="Post" /> | ||
106 | + | ||
107 | + </form> | ||
108 | + | ||
109 | + <% end %> | ||
110 | + | ||
38 | </div> | 111 | </div> |
39 | 112 | ||
113 | + <% end %> | ||
114 | + | ||
115 | + <% if logged_in? %> | ||
40 | <div class="settings"> | 116 | <div class="settings"> |
41 | <%= render :partial => "community_hub_plugin_public/settings" %> | 117 | <%= render :partial => "community_hub_plugin_public/settings" %> |
42 | </div> | 118 | </div> |
119 | + <% end %> | ||
43 | 120 | ||
44 | </div> | 121 | </div> |
45 | \ No newline at end of file | 122 | \ No newline at end of file |