Commit 1811287ffa3477d0eed0bd9f4ab0a7f1733e9794
1 parent
33408406
Exists in
master
and in
1 other branch
Display gamification status for user
Showing
8 changed files
with
55 additions
and
6 deletions
Show diff stats
lib/gamification_plugin.rb
... | ... | @@ -10,7 +10,7 @@ class GamificationPlugin < Noosfero::Plugin |
10 | 10 | |
11 | 11 | def user_data_extras |
12 | 12 | proc do |
13 | - current_person.present? ? {:points => current_person.points} : {} | |
13 | + current_person.present? ? {:gamification_plugin => {:points => current_person.points, :badges => current_person.badges, :level => current_person.level}} : {} | |
14 | 14 | end |
15 | 15 | end |
16 | 16 | ... | ... |
1.86 KB
676 Bytes
665 Bytes
public/main.js
1 | 1 | var gamificationPlugin = { |
2 | 2 | |
3 | - display_notification: function(html) { | |
3 | + displayNotification: function(html) { | |
4 | 4 | var n = noty({ |
5 | 5 | text: html, |
6 | 6 | type: 'success', |
... | ... | @@ -14,5 +14,17 @@ var gamificationPlugin = { |
14 | 14 | speed : 500 |
15 | 15 | } |
16 | 16 | }); |
17 | + }, | |
18 | + displayUserInfo: function(gamificationPlugin) { | |
19 | + var info = jQuery('.gamification-plugin.user-info-template').clone(); | |
20 | + info.find('.badges .value').text(gamificationPlugin.badges.length); | |
21 | + info.find('.points .value').text(gamificationPlugin.points); | |
22 | + info.find('.level .value').text(gamificationPlugin.level); | |
23 | + info.insertAfter('#user .logged-in #homepage-link'); | |
24 | + info.show(); | |
17 | 25 | } |
18 | 26 | } |
27 | + | |
28 | +jQuery(window).bind("userDataLoaded", function(event, data) { | |
29 | + gamificationPlugin.displayUserInfo(data.gamification_plugin); | |
30 | +}); | ... | ... |
public/style.css
1 | +#user .gamification-plugin.user-info-template { | |
2 | + margin-left: 2px; | |
3 | + text-decoration: none; | |
4 | + padding: 2px; | |
5 | +} | |
6 | +#user .gamification-plugin.user-info-template:hover { | |
7 | + background-color: rgb(228, 228, 228); | |
8 | +} | |
9 | +.gamification-plugin.user-info-template .icon { | |
10 | + background-size: 14px; | |
11 | + background-repeat: no-repeat; | |
12 | + width: 17px; | |
13 | + display: inline-block; | |
14 | + border: 0; | |
15 | +} | |
16 | +.gamification-plugin.user-info-template .icon:hover { | |
17 | + background-color: transparent; | |
18 | +} | |
19 | +.gamification-plugin.user-info-template .level .icon { | |
20 | + background-image: url(/plugins/gamification/images/level-icon.png); | |
21 | +} | |
22 | +.gamification-plugin.user-info-template .badges .icon { | |
23 | + background-image: url(/plugins/gamification/images/badge-icon.png); | |
24 | +} | |
25 | +.gamification-plugin.user-info-template .points .icon { | |
26 | + background-image: url(/plugins/gamification/images/points-icon.png); | |
27 | +} | |
28 | + | |
1 | 29 | .gamification-notification .badge .image { |
2 | 30 | width: 110px; |
3 | 31 | height: 80px; |
4 | - background: gray; | |
32 | + background-image: url(/plugins/gamification/images/badge-icon.png); | |
33 | + background-repeat: no-repeat; | |
34 | + background-position: center; | |
35 | + background-color: rgba(128, 128, 128, 0.25); | |
5 | 36 | margin-left: auto; |
6 | 37 | margin-right: auto; |
7 | 38 | } | ... | ... |
test/unit/gamification_plugin_test.rb
... | ... | @@ -9,8 +9,8 @@ class GamificationPluginTest < ActiveSupport::TestCase |
9 | 9 | |
10 | 10 | attr_accessor :plugin, :current_person |
11 | 11 | |
12 | - should 'return user points in user_data_extras' do | |
13 | - assert_equal({:points => 0}, instance_eval(&plugin.user_data_extras)) | |
12 | + should 'return user points and badges in user_data_extras' do | |
13 | + assert_equal({:gamification_plugin => {:points => 0, :badges => [], :level => 0}}, instance_eval(&plugin.user_data_extras)) | |
14 | 14 | end |
15 | 15 | |
16 | 16 | end | ... | ... |
views/gamification/display_notifications.html.erb
1 | 1 | <%= stylesheet_link_tag '/plugins/gamification/animate.css' %> |
2 | 2 | |
3 | +<%= link_to({:controller => 'gamification_plugin_profile', :action => :info, :profile => current_person.identifier }, :class => 'gamification-plugin user-info-template', :style => 'display: none') do %> | |
4 | + <span class="level"><span class="icon"> </span><span class="value"></span></span> | |
5 | + <span class="points"><span class="icon"> </span><span class="value"></span></span> | |
6 | + <span class="badges"><span class="icon"> </span><span class="value"></span></span> | |
7 | +<% end %> | |
8 | + | |
3 | 9 | <script> |
4 | 10 | <% badges.each do |badge| %> |
5 | 11 | <% html = render :file => 'gamification/notification_badge', :locals => {:badge => badge} %> |
6 | - <%= "gamificationPlugin.display_notification('#{j html}');" %> | |
12 | + <%= "gamificationPlugin.displayNotification('#{j html}');" %> | |
7 | 13 | <% end %> |
8 | 14 | </script> | ... | ... |