Class: PhotosController

Inherits:
ApplicationController show all
Defined in:
app/controllers/photos_controller.rb

Overview

Copyright © 2010-2011, Diaspora Inc. This file is

licensed under the Affero General Public License version 3 or later.  See
the COPYRIGHT file.

Instance Method Summary collapse

Instance Method Details

#createObject


45
46
47
48
49
# File 'app/controllers/photos_controller.rb', line 45

def create
  rescuing_photo_errors do
    legacy_create
  end
end

#destroyObject


79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'app/controllers/photos_controller.rb', line 79

def destroy
  photo = current_user.photos.where(id: params[:id]).first

  if photo
    current_user.retract(photo)

    respond_to do |format|
      format.json { head :no_content }
      format.html do
        flash[:notice] = I18n.t "photos.destroy.notice"
        if StatusMessage.find_by(guid: photo.status_message_guid)
          respond_with photo, location: post_path(photo.status_message)
        else
          respond_with photo, location: person_photos_path(current_user.person)
        end
      end
    end
  else
    respond_with photo, location: person_photos_path(current_user.person)
  end
end

#indexObject


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/controllers/photos_controller.rb', line 21

def index
  @post_type = :photos
  @person = Person.find_by(guid: params[:person_id])
  authenticate_user! if @person.try(:remote?) && !user_signed_in?
  @presenter = PersonPresenter.new(@person, current_user)

  if @person
    @contact = current_user.contact_for(@person) if user_signed_in?
    @posts = Photo.visible(current_user, @person, :all, max_time)
    respond_to do |format|
      format.all do
        gon.preloads[:person] = @presenter.as_json
        gon.preloads[:photos_count] = Photo.visible(current_user, @person).count(:all)
        render "people/show", layout: "with_header"
      end
      format.mobile { render "people/show" }
      format.json { render_for_api :backbone, json: @posts, root: :photos }
    end
  else
    flash[:error] = I18n.t "people.show.does_not_exist"
    redirect_to people_path
  end
end

#make_profile_photoObject


51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'app/controllers/photos_controller.rb', line 51

def make_profile_photo
  author_id = current_user.person_id
  @photo = Photo.where(id: params[:photo_id], author_id: author_id).first

  if @photo
    profile_hash = {image_url:        @photo.url(:thumb_large),
                    image_url_medium: @photo.url(:thumb_medium),
                    image_url_small:  @photo.url(:thumb_small)}

    if current_user.update_profile(profile_hash)
      respond_to do |format|
        format.js {
          render json:   {photo_id:         @photo.id,
                          image_url:        @photo.url(:thumb_large),
                          image_url_medium: @photo.url(:thumb_medium),
                          image_url_small:  @photo.url(:thumb_small),
                          author_id:        author_id},
                 status: 201
        }
      end
    else
      head :unprocessable_entity
    end
  else
    head :unprocessable_entity
  end
end

#showObject

Raises:

  • (ActiveRecord::RecordNotFound)

11
12
13
14
15
16
17
18
19
# File 'app/controllers/photos_controller.rb', line 11

def show
  @photo = if user_signed_in?
             current_user.photos_from(Person.find_by(guid: params[:person_id])).where(id: params[:id]).first
           else
             Photo.where(id: params[:id], public: true).first
  end

  raise ActiveRecord::RecordNotFound unless @photo
end