diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb index f76f1c6e6..25fb5d0e4 100644 --- a/app/controllers/people_controller.rb +++ b/app/controllers/people_controller.rb @@ -37,7 +37,6 @@ class PeopleController < ApplicationController @aspect = :person_edit @person = current_user.person @profile = @person.profile - @photos = current_user.visible_posts(:person_id => @person.id, :_type => 'Photo').paginate :page => params[:page], :order => 'created_at DESC' end def update @@ -47,6 +46,15 @@ class PeopleController < ApplicationController params[:person][:profile][:birthday] ||= Date.parse("#{birthday[:year]}-#{birthday[:month]}-#{birthday[:day]}") end + # upload and set new profile photo + if params[:person][:profile][:image] + raw_image = params[:person][:profile].delete(:image) + params[:profile_image_hash] = { :user_file => raw_image, :to => "all" } + + photo = current_user.post(:photo, params[:profile_image_hash]) + params[:person][:profile][:image_url] = photo.url(:thumb_medium) + end + prep_image_url(params[:person]) if current_user.update_profile params[:person][:profile] @@ -64,15 +72,17 @@ class PeopleController < ApplicationController private def prep_image_url(params) - url = APP_CONFIG[:pod_url].dup - url.chop! if APP_CONFIG[:pod_url][-1,1] == '/' - if params[:profile][:image_url].empty? - params[:profile].delete(:image_url) - else - if /^http:\/\// =~ params[:profile][:image_url] - params[:profile][:image_url] = params[:profile][:image_url] + if params[:profile] && params[:profile][:image_url] + url = APP_CONFIG[:pod_url].dup + url.chop! if APP_CONFIG[:pod_url][-1,1] == '/' + if params[:profile][:image_url].empty? + params[:profile].delete(:image_url) else - params[:profile][:image_url] = url + params[:profile][:image_url] + if /^http:\/\// =~ params[:profile][:image_url] + params[:profile][:image_url] = params[:profile][:image_url] + else + params[:profile][:image_url] = url + params[:profile][:image_url] + end end end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 45182cd88..36f31c6b8 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -75,7 +75,6 @@ class UsersController < ApplicationController @user = current_user @person = @user.person @profile = @user.profile - @photos = @user.visible_posts(:person_id => current_user.person.id, :_type => 'Photo').paginate :page => params[:page], :order => 'created_at DESC' @services = @user.services @step = ((params[:step].to_i>0)&&(params[:step].to_i<5)) ? params[:step].to_i : 1 diff --git a/app/views/people/_profile_photo_upload.html.haml b/app/views/people/_profile_photo_upload.html.haml new file mode 100644 index 000000000..cd9577abe --- /dev/null +++ b/app/views/people/_profile_photo_upload.html.haml @@ -0,0 +1,13 @@ +-# Copyright (c) 2010, Diaspora Inc. This file is +-# licensed under the Affero General Public License version 3 or later. See +-# the COPYRIGHT file. + + +#profile_photo_upload + = owner_image_tag + = form.file_field :image + + %p + \...or select one from your already existing + = link_to 'photos', person_photos_path(@person) + \. diff --git a/app/views/people/edit.html.haml b/app/views/people/edit.html.haml index 29e10d757..19d1bafb7 100644 --- a/app/views/people/edit.html.haml +++ b/app/views/people/edit.html.haml @@ -12,7 +12,7 @@ %li=link_to 'Services', services_path .span-19.prepend-5.last - = form_for @person do |person| + = form_for @person, :html => { :multipart => true } do |person| %h3 Your Profile .description @@ -42,26 +42,7 @@ %h4 Your photo - %div#image_picker - = profile.hidden_field :image_url, :value => (@profile.image_url if @profile.image_url), :id => 'image_url_field' - - - unless @photos.nil? || @photos.empty? - - for photo in @photos - - if @profile.image_url && @profile.image_url.include?(photo.url(:thumb_medium)) - %div.small_photo{:id => photo.url(:thumb_medium), :class=>'selected'} - = check_box_tag 'checked_photo', true, true - = link_to image_tag(photo.url(:thumb_medium)), "#" - - else - %div.small_photo{:id => photo.url(:thumb_medium)} - = check_box_tag 'checked_photo' - = link_to image_tag(photo.url(:thumb_medium)), "#" - - - else - =t('.you_dont_have_any_photos') - = link_to t('.albums'), albums_path(:aspect => 'all') - =t('.page_to_upload_some') - - =will_paginate @photos + = render 'people/profile_photo_upload', :form => profile .submit_block = link_to t('.cancel'), edit_user_path(current_user) diff --git a/app/views/photos/_new_photo.haml b/app/views/photos/_new_photo.haml index a5efe45da..dd029008e 100644 --- a/app/views/photos/_new_photo.haml +++ b/app/views/photos/_new_photo.haml @@ -6,7 +6,7 @@ function createUploader(){ var uploader = new qq.FileUploader({ element: document.getElementById('file-upload'), - params: {'photo' : { 'album_id' : "#{album_id}", 'to' : "#{aspect_id}"}}, + params: {'photo' : { 'album_id' : "#{album_id}", 'to' : "#{aspect_id}"}, 'set_profile_image' : "#{set_profile_image if defined?(set_profile_image)}"}, allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'], action: "#{photos_path}" }); diff --git a/app/views/users/getting_started/_step_1.html.haml b/app/views/users/getting_started/_step_1.html.haml index 7778a39f8..6ee900211 100644 --- a/app/views/users/getting_started/_step_1.html.haml +++ b/app/views/users/getting_started/_step_1.html.haml @@ -3,7 +3,7 @@ -# the COPYRIGHT file. -= form_for @person do |person| += form_for @person, :html => { :multipart => true } do |person| %h3 Your Profile .description @@ -33,26 +33,7 @@ %h4 Your photo - %div#image_picker - = profile.hidden_field :image_url, :value => (@profile.image_url if @profile.image_url), :id => 'image_url_field' - - - unless @photos.nil? || @photos.empty? - - for photo in @photos - - if @profile.image_url && @profile.image_url.include?(photo.url(:thumb_medium)) - %div.small_photo{:id => photo.url(:thumb_medium), :class=>'selected'} - = check_box_tag 'checked_photo', true, true - = link_to image_tag(photo.url(:thumb_medium)), "#" - - else - %div.small_photo{:id => photo.url(:thumb_medium)} - = check_box_tag 'checked_photo' - = link_to image_tag(photo.url(:thumb_medium)), "#" - - - else - =t('.you_dont_have_any_photos') - = link_to t('.albums'), albums_path(:aspect => 'all') - =t('.page_to_upload_some') - - =will_paginate @photos + = render 'people/profile_photo_upload', :form => profile = hidden_field_tag :getting_started, @step diff --git a/public/stylesheets/sass/application.sass b/public/stylesheets/sass/application.sass index 16b8b4fc3..96fb467ed 100644 --- a/public/stylesheets/sass/application.sass +++ b/public/stylesheets/sass/application.sass @@ -1377,3 +1377,17 @@ ul.aspects :display inline :left 600px :top 0 + +#profile_photo_upload + :margin + :top 5px + img + :position absolute + :left 0 + :height 100px + :width 100px + :border-radius 5px + :-webkit-box-shadow 0 1px 2px #666 + + :padding + :left 120px