Skip to content
Extraits de code Groupes Projets
likes_controller.rb 2,13 ko
Newer Older
  • Learn to ignore specific revisions
  • danielgrippi's avatar
    danielgrippi a validé
    #   Copyright (c) 2010-2011, Diaspora Inc.  This file is
    
    #   licensed under the Affero General Public License version 3 or later.  See
    #   the COPYRIGHT file.
    
    class LikesController < ApplicationController
      include ApplicationHelper
      before_filter :authenticate_user!
    
      def create
        positive = (params[:positive] == 'true') ? true : false
        if target
    
          @like = current_user.build_like(:positive => positive, :target => target)
    
    
          if @like.save
            Rails.logger.info("event=create type=like user=#{current_user.diaspora_handle} status=success like=#{@like.id} positive=#{positive}")
    
            Postzord::Dispatcher.build(current_user, @like).post
    
              format.js { render 'likes/update', :status => 201 }
    
              format.html { render :nothing => true, :status => 201 }
    
              format.mobile { redirect_to post_path(@like.post_id) }
    
              format.json { render :json => {"id" => @like.id}, :status => 201 }
    
            end
          else
            render :nothing => true, :status => 422
          end
        else
          render :nothing => true, :status => 422
        end
      end
    
        if @like = Like.where(:id => params[:id], :author_id => current_user.person.id).first
    
          respond_to do |format|
    
            format.js { render 'likes/update' }
    
            format.json { render :nothing => true, :status => :ok}
    
            format.mobile { redirect_to :back }
            format.js { render :nothing => true, :status => 403 }
    
            format.json { render :nothing => true, :status => 403}
    
    Raphael Sofaer's avatar
    Raphael Sofaer a validé
    
      def index
    
    Raphael Sofaer's avatar
    Raphael Sofaer a validé
          @likes = target.likes.includes(:author => :profile)
          render :layout => false
        else
          render :nothing => true, :status => 404
        end
      end
    
    
      def target
        @target ||= if params[:post_id]
    
          current_user.find_visible_shareable_by_id(Post, params[:post_id])
    
        else
          comment = Comment.find(params[:comment_id])
    
          comment = nil unless current_user.find_visible_shareable_by_id(Post, comment.commentable_id)