diff --git a/app/assets/javascripts/application/learning_objects.coffee b/app/assets/javascripts/application/learning_objects.coffee index b50f394bdc37e5076efe2796d8e44d89eaec4d13..d0216b86713e5fe8a6a57e03d80853a4d5bbedcd 100644 --- a/app/assets/javascripts/application/learning_objects.coffee +++ b/app/assets/javascripts/application/learning_objects.coffee @@ -5,3 +5,11 @@ $ -> $('#collections_list_popover').html() return + + +# Rails creates this event, when the link_to(remote: true) +# successfully executes +$(document).on 'ajax:success', 'a.vote', (status, data, xhr)-> +# the `data` parameter is the decoded JSON object + $(".votes-count[data-id=#{data.id}]").text data.count + return \ No newline at end of file diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb index a1e384b0a65f098238a181b9098d1f9fc85fcc84..1ec896da824a1104b7d63744df144122ae505a1b 100644 --- a/app/controllers/learning_objects_controller.rb +++ b/app/controllers/learning_objects_controller.rb @@ -1,7 +1,7 @@ class LearningObjectsController < ApplicationController before_action :set_learning_object, only: [:show, :edit, :update, :destroy, :like] after_action :increment_learning_object_views, only: [:show] - before_action :authenticate_user!, except: [:index, :show] + before_action :authenticate_user!, except: [:index, :show, :like] # GET /learning_objects # GET /learning_objects.json @@ -62,7 +62,10 @@ class LearningObjectsController < ApplicationController # POST /learning_objects/1/like def like learning_object_repository.like current_user, @learning_object - redirect_to :back + + if request.xhr? + render json: {count: @learning_object.likes, id: params[:id]} + end end private @@ -83,4 +86,4 @@ class LearningObjectsController < ApplicationController end end -end +end \ No newline at end of file diff --git a/app/models/learning_object.rb b/app/models/learning_object.rb index b0c27500ddb7453022f9c3fc6060bc99d1bbf455..9c69866228d748dcd084c668d703bbc6bc237b9b 100644 --- a/app/models/learning_object.rb +++ b/app/models/learning_object.rb @@ -1,5 +1,7 @@ class LearningObject include ActiveModel::Model + include RepositoriesProxy + attr_accessor :id, :id_dspace, :rid, :name, :description, :thumbnail, :created_at, :last_modified, :type, :bitstreams, :metadata, :likes, :views, @@ -73,8 +75,4 @@ class LearningObject } end - def learning_object_repository - Portalmec::Application.repository.for :learning_object - end - end diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb index ad6b2fa816bd819627c771ce863878066ec24ae8..51e747d9bd442255692884d08b39a4674fb7166a 100644 --- a/app/repositories/orient_db/learning_object_repository.rb +++ b/app/repositories/orient_db/learning_object_repository.rb @@ -5,6 +5,7 @@ module OrientDb def increment_views(user, learning_object) create_edge "Views", user.rid, learning_object.id + learning_object.views = learning_object.views + 1 end # @@ -13,6 +14,7 @@ module OrientDb # def like(user, learning_object) create_edge "Likes", user.rid, learning_object.id + learning_object.likes = learning_object.likes + 1 end # Example: @@ -58,7 +60,7 @@ module OrientDb result = connection.command "INSERT INTO LearningObject CONTENT #{learning_object.to_json}" end - def update_property(learning_object,property,value) + def update_property(learning_object, property, value) if accepted_properties.include? property connection.command "UPDATE LearningObject SET #{property}='#{value}' WHERE @rid = #{learning_object.id}" end diff --git a/app/repositories/user_repository_proxy.rb b/app/repositories/user_repository_proxy.rb index 27643d6e0d5d88182d8f86ba33e35e009557f805..ca65c093dab1d8f3eaa898225ae838861d3fcc66 100644 --- a/app/repositories/user_repository_proxy.rb +++ b/app/repositories/user_repository_proxy.rb @@ -48,7 +48,7 @@ class UserRepositoryProxy def update_user_refs(user) rid = get_graph_id user user.rid = rid - user.save! + save user end def check_references(user) diff --git a/app/views/learning_objects/_actions_buttons.html.erb b/app/views/learning_objects/_actions_buttons.html.erb index 23ca78e5048d333ba161b35bab64650b0db67b75..eb1d2c5eedb830378a2cd4fe39b9124154bff8b9 100644 --- a/app/views/learning_objects/_actions_buttons.html.erb +++ b/app/views/learning_objects/_actions_buttons.html.erb @@ -1,5 +1,5 @@ <div class="learning-object-actions"> - <%= render 'learning_objects/like_button' %> + <%= render 'learning_objects/like_button', learning_object: learning_object %> <%= render 'learning_objects/bookmarks_button' %> <%= render 'learning_objects/collections_button' %> </div> \ No newline at end of file diff --git a/app/views/learning_objects/_learning_object_horizontal.erb b/app/views/learning_objects/_learning_object_horizontal.erb index ab1cb73e934fabb161d5d2ab431878d2a3b1d7da..96f29ce57f43e516bda32d58545f28b524032fd2 100644 --- a/app/views/learning_objects/_learning_object_horizontal.erb +++ b/app/views/learning_objects/_learning_object_horizontal.erb @@ -8,7 +8,7 @@ end %> <% if user_signed_in? %> - <%= render 'learning_objects/actions_buttons' %> + <%= render 'learning_objects/actions_buttons', learning_object: learning_object %> <% end %> </div> </div> diff --git a/app/views/learning_objects/_learning_object_vertical.erb b/app/views/learning_objects/_learning_object_vertical.erb index 6084b3a027e37116e74e3dafe1c96946996e5b80..e6241383bda734cdcc96a9eef6ef190d7d687d50 100644 --- a/app/views/learning_objects/_learning_object_vertical.erb +++ b/app/views/learning_objects/_learning_object_vertical.erb @@ -5,14 +5,14 @@ learning_object_thumbnail learning_object end %> <% if user_signed_in? %> - <%= render 'learning_objects/actions_buttons' %> + <%= render 'learning_objects/actions_buttons', learning_object: learning_object %> <% end %> </div> <div class="panel-body"> <h4 class="media-heading"><%= learning_object_title(learning_object) %></h4> - <span class="glyphicon glyphicon-eye-open"><%= learning_object.views %> </span> - <span class="glyphicon glyphicon-star"><%= learning_object.likes %> </span> + <span class="glyphicon glyphicon-eye-open"><%= learning_object.views %></span> + <span class="glyphicon glyphicon-star votes-count" data-id="<%= learning_object.id %>"><%= learning_object.likes %></span> <span class="author-label">Por <%= learning_object.get_metadata_value_of("dc.contributor.author") %></span> </div> </div> -</div> +</div> \ No newline at end of file diff --git a/app/views/learning_objects/_like_button.html.erb b/app/views/learning_objects/_like_button.html.erb index b59543135607e64f8cf73b6360e17d1d8850f346..45a5e00594c3d1309068f409a1fa4466f28321af 100644 --- a/app/views/learning_objects/_like_button.html.erb +++ b/app/views/learning_objects/_like_button.html.erb @@ -1,3 +1,3 @@ -<button type="button" class="btn btn-primary btn-xs" data-toggle="button" aria-pressed="false" autocomplete="off" title="Gostei"> - <span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span> -</button> \ No newline at end of file +<%= link_to like_learning_object_path(id: learning_object.id), class: 'btn btn-primary btn-xs vote', method: :post, remote: true do %> + <span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span> +<% end %> \ No newline at end of file