add settings web mobile
This commit is contained in:
parent
bbaa94f3a5
commit
0010819343
13 changed files with 527 additions and 3 deletions
|
|
@ -28,6 +28,7 @@
|
||||||
* Add images to notifications [#3821](https://github.com/diaspora/diaspora/pull/3821)
|
* Add images to notifications [#3821](https://github.com/diaspora/diaspora/pull/3821)
|
||||||
* Show pod version in footer and updated the link to the changelog [#3822](https://github.com/diaspora/diaspora/pull/3822)
|
* Show pod version in footer and updated the link to the changelog [#3822](https://github.com/diaspora/diaspora/pull/3822)
|
||||||
* User interface enhancements [#3832](https://github.com/diaspora/diaspora/pull/3832), [#3839](https://github.com/diaspora/diaspora/pull/3839), [#3834](https://github.com/diaspora/diaspora/pull/3834), [#3840](https://github.com/diaspora/diaspora/issues/3840), [#3846](https://github.com/diaspora/diaspora/issues/3846), [#3851](https://github.com/diaspora/diaspora/issues/3851), [#3828](https://github.com/diaspora/diaspora/issues/3828).
|
* User interface enhancements [#3832](https://github.com/diaspora/diaspora/pull/3832), [#3839](https://github.com/diaspora/diaspora/pull/3839), [#3834](https://github.com/diaspora/diaspora/pull/3834), [#3840](https://github.com/diaspora/diaspora/issues/3840), [#3846](https://github.com/diaspora/diaspora/issues/3846), [#3851](https://github.com/diaspora/diaspora/issues/3851), [#3828](https://github.com/diaspora/diaspora/issues/3828).
|
||||||
|
* Add settings web mobile. [#3701](https://github.com/diaspora/diaspora/pull/3701)
|
||||||
|
|
||||||
## Bug Fixes
|
## Bug Fixes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
//= require mbp-respond.min
|
//= require mbp-respond.min
|
||||||
//= require mbp-helper
|
//= require mbp-helper
|
||||||
//= require jquery.autoSuggest.custom
|
//= require jquery.autoSuggest.custom
|
||||||
|
|
||||||
$(document).ready(function(){
|
$(document).ready(function(){
|
||||||
|
|
||||||
$('.shield a').click(function(){
|
$('.shield a').click(function(){
|
||||||
|
|
|
||||||
|
|
@ -836,3 +836,99 @@ form#new_user.new_user input.btn {
|
||||||
max-width: 400px;
|
max-width: 400px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
form p.checkbox_select {
|
||||||
|
position: relative;
|
||||||
|
label {
|
||||||
|
left: 25px;
|
||||||
|
top: 4px;
|
||||||
|
position: absolute;
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
img {
|
||||||
|
position: relative;
|
||||||
|
top: 6px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#profile_photo_upload {
|
||||||
|
margin-top: 5px;
|
||||||
|
min-height: 100px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
img {
|
||||||
|
@include border-radius(5px);
|
||||||
|
@include box-shadow(0,1px,2px,#666);
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
|
|
||||||
|
&.avatar {
|
||||||
|
@include transition(opacity, 0.5s);
|
||||||
|
&.loading {
|
||||||
|
@include opacity(0.3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
padding-left: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#file-upload.button {
|
||||||
|
@include border-radius(3px);
|
||||||
|
@include button-gradient($light-grey);
|
||||||
|
@include box-shadow(0,1px,1px,#cfcfcf);
|
||||||
|
@include transition(border);
|
||||||
|
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
font {
|
||||||
|
style: normal;
|
||||||
|
size: 12px;
|
||||||
|
}
|
||||||
|
color: #505050;
|
||||||
|
|
||||||
|
padding: 4px 9px;
|
||||||
|
|
||||||
|
min-height: 10px;
|
||||||
|
|
||||||
|
border: 1px solid;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
white-space: normal;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
@include button-gradient-hover-no-saturation($light-grey);
|
||||||
|
color: #505050;
|
||||||
|
text-decoration: none;
|
||||||
|
border: 1px solid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#settings_nav {
|
||||||
|
font-size: 1em;
|
||||||
|
|
||||||
|
ul {
|
||||||
|
margin: 0 0 0 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
display: inline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
form#update_profile_form {
|
||||||
|
select {
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
select#user_language, #user_auto_follow_back_aspect_id {
|
||||||
|
padding: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#file-upload-spinner {
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ class ProfilesController < ApplicationController
|
||||||
|
|
||||||
respond_to do |format|
|
respond_to do |format|
|
||||||
format.js { render :nothing => true, :status => 200 }
|
format.js { render :nothing => true, :status => 200 }
|
||||||
format.html {
|
format.any {
|
||||||
flash[:notice] = I18n.t 'profiles.update.updated'
|
flash[:notice] = I18n.t 'profiles.update.updated'
|
||||||
if current_user.getting_started?
|
if current_user.getting_started?
|
||||||
redirect_to getting_started_path
|
redirect_to getting_started_path
|
||||||
|
|
|
||||||
|
|
@ -60,8 +60,10 @@ class UsersController < ApplicationController
|
||||||
elsif u[:email]
|
elsif u[:email]
|
||||||
@user.unconfirmed_email = u[:email]
|
@user.unconfirmed_email = u[:email]
|
||||||
if @user.save
|
if @user.save
|
||||||
@user.mail_confirm_email
|
@user.mail_confirm_email == @user.email
|
||||||
|
if @user.unconfirmed_email
|
||||||
flash[:notice] = I18n.t 'users.update.unconfirmed_email_changed'
|
flash[:notice] = I18n.t 'users.update.unconfirmed_email_changed'
|
||||||
|
end
|
||||||
else
|
else
|
||||||
flash[:error] = I18n.t 'users.update.unconfirmed_email_not_changed'
|
flash[:error] = I18n.t 'users.update.unconfirmed_email_not_changed'
|
||||||
end
|
end
|
||||||
|
|
|
||||||
60
app/views/photos/_new_profile_photo.mobile.haml
Normal file
60
app/views/photos/_new_profile_photo.mobile.haml
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
-# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
||||||
|
-# licensed under the Affero General Public License version 3 or later. See
|
||||||
|
-# the COPYRIGHT file.
|
||||||
|
|
||||||
|
- content_for :head do
|
||||||
|
:javascript
|
||||||
|
function createUploader(){
|
||||||
|
var uploader = new qq.FileUploaderBasic({
|
||||||
|
element: document.getElementById('file-upload'),
|
||||||
|
params: {'photo' : {'pending' : true, 'aspect_ids' : "all", 'set_profile_photo': true}},
|
||||||
|
allowedExtensions: ['jpg', 'jpeg', 'png'],
|
||||||
|
action: "#{photos_path}",
|
||||||
|
button: document.getElementById('file-upload'),
|
||||||
|
sizeLimit: 4194304,
|
||||||
|
|
||||||
|
onProgress: function(id, fileName, loaded, total){
|
||||||
|
var progress = Math.round(loaded / total * 100 );
|
||||||
|
$('#fileInfo').text(fileName + ' ' + progress + '%');
|
||||||
|
},
|
||||||
|
|
||||||
|
messages: {
|
||||||
|
typeError: "#{t('photos.new_photo.invalid_ext')}",
|
||||||
|
sizeError: "#{t('photos.new_photo.size_error')}",
|
||||||
|
emptyError: "#{t('photos.new_photo.empty')}"
|
||||||
|
},
|
||||||
|
|
||||||
|
onSubmit: function(id, fileName){
|
||||||
|
$('#file-upload').addClass("loading");
|
||||||
|
$("#profile_photo_upload").find(".avatar").addClass('loading');
|
||||||
|
$("#file-upload-spinner").removeClass("hidden");
|
||||||
|
},
|
||||||
|
|
||||||
|
onComplete: function(id, fileName, result){
|
||||||
|
$("#file-upload-spinner").addClass("hidden");
|
||||||
|
$('#fileInfo').text(fileName + ' completed').fadeOut(2000);
|
||||||
|
$('#file-upload').removeClass("loading");
|
||||||
|
location.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
window.onload = createUploader;
|
||||||
|
|
||||||
|
#profile_photo_upload
|
||||||
|
= owner_image_tag(:thumb_medium)
|
||||||
|
|
||||||
|
-if !aspect.nil? && aspect == :getting_started
|
||||||
|
%br
|
||||||
|
%br
|
||||||
|
|
||||||
|
#file-upload.button
|
||||||
|
=t('.upload')
|
||||||
|
|
||||||
|
= image_tag('mobile-spinner.gif', :class => 'hidden', :style => "z-index:-1", :id => 'file-upload-spinner')
|
||||||
|
|
||||||
|
%br
|
||||||
|
%br
|
||||||
|
%p
|
||||||
|
#fileInfo
|
||||||
|
|
||||||
|
#publisher_photo_upload
|
||||||
54
app/views/profiles/_edit.mobile.haml
Normal file
54
app/views/profiles/_edit.mobile.haml
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
-# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
||||||
|
-# licensed under the Affero General Public License version 3 or later. See
|
||||||
|
-# the COPYRIGHT file.
|
||||||
|
|
||||||
|
- content_for :page_title do
|
||||||
|
= t('.edit_profile')
|
||||||
|
|
||||||
|
= form_tag profile_path, :method => :put, :multipart => true, :id => 'update_profile_form' do
|
||||||
|
= render 'profiles/edit_public', :profile => profile, :aspect => aspect, :person => person
|
||||||
|
|
||||||
|
%hr
|
||||||
|
%h4
|
||||||
|
= t('profiles.edit.your_private_profile')
|
||||||
|
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('profiles.edit.your_bio')
|
||||||
|
= text_area_tag 'profile[bio]', profile.bio, :rows => 5, :placeholder => t('fill_me_out')
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('profiles.edit.your_location')
|
||||||
|
= text_field_tag 'profile[location]', profile.location, :placeholder => t('fill_me_out')
|
||||||
|
|
||||||
|
|
||||||
|
%br
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('profiles.edit.your_gender')
|
||||||
|
= text_field_tag 'profile[gender]', profile.gender, :placeholder => t("fill_me_out")
|
||||||
|
|
||||||
|
%br
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('profiles.edit.your_birthday')
|
||||||
|
= select_date profile.birthday, :prompt => true,
|
||||||
|
:default => true, :order => t('date.order'), :start_year => 2000, :end_year => 1930, :prefix => 'profile[date]'
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('search')
|
||||||
|
|
||||||
|
%p{:class=>"checkbox_select"}
|
||||||
|
= label_tag 'profile[searchable]', t('profiles.edit.allow_search')
|
||||||
|
= check_box_tag 'profile[searchable]', true, profile.searchable
|
||||||
|
%br
|
||||||
|
|
||||||
|
%h4= t('nsfw')
|
||||||
|
%p.nsfw_explanation=profile.nsfw? ? t('.you_are_nsfw') : t('.you_are_safe_for_work')
|
||||||
|
%p{:class=>"checkbox_select"}
|
||||||
|
= check_box_tag 'profile[nsfw]', true, profile.nsfw?
|
||||||
|
= label_tag 'profile[nsfw]', "nsfw?"
|
||||||
|
%br
|
||||||
|
|
||||||
|
.submit_block
|
||||||
|
=yield(:submit_block)
|
||||||
72
app/views/profiles/_edit_public.mobile.haml
Normal file
72
app/views/profiles/_edit_public.mobile.haml
Normal file
|
|
@ -0,0 +1,72 @@
|
||||||
|
-# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
||||||
|
-# licensed under the Affero General Public License version 3 or later. See
|
||||||
|
-# the COPYRIGHT file.
|
||||||
|
|
||||||
|
- content_for :head do
|
||||||
|
= javascript_include_tag :jquery
|
||||||
|
= javascript_include_tag :home
|
||||||
|
|
||||||
|
:javascript
|
||||||
|
$(document).ready(function () {
|
||||||
|
var data = $.parseJSON( '#{@tags_array.to_json.gsub("'", "\\\\'")}' ),
|
||||||
|
autocompleteInput = $("#profile_tag_string");
|
||||||
|
|
||||||
|
autocompleteInput.autoSuggest("#{tags_path}", {
|
||||||
|
selectedItemProp: "name",
|
||||||
|
selectedValuesProp: "name",
|
||||||
|
searchObjProps: "name",
|
||||||
|
asHtmlID: "tags",
|
||||||
|
neverSubmit: true,
|
||||||
|
retrieveLimit: 10,
|
||||||
|
minChars: 2,
|
||||||
|
keyDelay: 200,
|
||||||
|
startText: "",
|
||||||
|
emptyText: "#{t('no_results')}",
|
||||||
|
preFill: data
|
||||||
|
});
|
||||||
|
|
||||||
|
autocompleteInput.bind('keydown', function(evt){
|
||||||
|
if(evt.keyCode == 13 || evt.keyCode == 9 || evt.keyCode == 32){
|
||||||
|
evt.preventDefault();
|
||||||
|
if( $('li.as-result-item.active').length == 0 ){
|
||||||
|
$('li.as-result-item').first().click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
.stream
|
||||||
|
- flash.each do |name, msg|
|
||||||
|
%div{:id => "flash_#{name}", :class => "expose"}
|
||||||
|
.message= msg
|
||||||
|
.stream
|
||||||
|
%p{:class => "conversation_#{name}"}= msg
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('profiles.edit.your_public_profile')
|
||||||
|
|
||||||
|
= error_messages_for profile
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('profiles.edit.your_name')
|
||||||
|
= label_tag 'profile[first_name]', t('profiles.edit.first_name')
|
||||||
|
= text_field_tag 'profile[first_name]', profile.first_name, :placeholder => "Raphael"
|
||||||
|
|
||||||
|
= label_tag 'profile[first_name]', t('profiles.edit.last_name')
|
||||||
|
= text_field_tag 'profile[last_name]', profile.last_name, :placeholder => "Sofaer"
|
||||||
|
|
||||||
|
%br
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('profiles.edit.your_tags')
|
||||||
|
|
||||||
|
= text_field_tag 'profile[tag_string]', "", :placeholder => t('profiles.edit.your_tags_placeholder')
|
||||||
|
|
||||||
|
%br
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('profiles.edit.your_photo')
|
||||||
|
|
||||||
|
= render 'photos/new_profile_photo', :aspect => aspect, :person => person
|
||||||
|
|
||||||
|
%br
|
||||||
16
app/views/profiles/edit.mobile.haml
Normal file
16
app/views/profiles/edit.mobile.haml
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
-# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
||||||
|
-# licensed under the Affero General Public License version 3 or later. See
|
||||||
|
-# the COPYRIGHT file.
|
||||||
|
|
||||||
|
|
||||||
|
#section_header
|
||||||
|
%h3
|
||||||
|
= t('settings')
|
||||||
|
= render 'shared/settings_nav'
|
||||||
|
|
||||||
|
.span-12.prepend-5.last
|
||||||
|
- content_for :submit_block do
|
||||||
|
= link_to t('cancel'), local_or_remote_person_path(current_user.person), :class => "button"
|
||||||
|
= submit_tag t('.update_profile'), :class => "btn"
|
||||||
|
= render :partial => 'edit', :locals => {:person => @person,
|
||||||
|
:profile => @profile, :aspect => @aspect, :step => @step}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
%footer
|
%footer
|
||||||
%strong
|
%strong
|
||||||
= link_to current_user.name, current_user.person
|
= link_to current_user.name, current_user.person
|
||||||
|
= link_to t('layouts.header.settings'), users_edit_path
|
||||||
= link_to t('layouts.application.toggle'), toggle_mobile_path
|
= link_to t('layouts.application.toggle'), toggle_mobile_path
|
||||||
= link_to t('layouts.header.logout'), destroy_user_session_path
|
= link_to t('layouts.header.logout'), destroy_user_session_path
|
||||||
|
|
|
||||||
7
app/views/shared/_settings_nav.mobile.haml
Normal file
7
app/views/shared/_settings_nav.mobile.haml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
#span-24
|
||||||
|
%h3
|
||||||
|
#settings_nav
|
||||||
|
%ul
|
||||||
|
%li= link_to_unless_current t('profile'), edit_profile_path
|
||||||
|
|
|
||||||
|
%li= link_to_unless_current t('account'), edit_user_path
|
||||||
207
app/views/users/edit.mobile.haml
Normal file
207
app/views/users/edit.mobile.haml
Normal file
|
|
@ -0,0 +1,207 @@
|
||||||
|
-# Copyright (c) 2010-2011, Diaspora Inc. This file is
|
||||||
|
-# licensed under the Affero General Public License version 3 or later. See
|
||||||
|
-# the COPYRIGHT file.
|
||||||
|
|
||||||
|
- content_for :page_title do
|
||||||
|
= t('.edit_account')
|
||||||
|
|
||||||
|
.stream
|
||||||
|
- flash.each do |name, msg|
|
||||||
|
%div{:id => "flash_#{name}", :class => "expose"}
|
||||||
|
.message= msg
|
||||||
|
.stream
|
||||||
|
%p{:class => "conversation_#{name}"}= msg
|
||||||
|
|
||||||
|
#section_header
|
||||||
|
%h3
|
||||||
|
= t('settings')
|
||||||
|
= render 'shared/settings_nav'
|
||||||
|
|
||||||
|
.span-12.prepend-5.last
|
||||||
|
%hr
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('.your_handle')
|
||||||
|
%p
|
||||||
|
%b= current_user.diaspora_handle
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('.your_email')
|
||||||
|
= form_for 'user', :url => user_path, :html => { :method => :put } do |f|
|
||||||
|
= f.error_messages
|
||||||
|
%p
|
||||||
|
= f.text_field :email, :value => @user.unconfirmed_email || @user.email
|
||||||
|
= f.submit t('.change_email'), :class => "btn"
|
||||||
|
- if @user.unconfirmed_email.present?
|
||||||
|
%p= t('.email_awaiting_confirmation', :email => @user.email, :unconfirmed_email => @user.unconfirmed_email)
|
||||||
|
|
||||||
|
%hr
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('.change_password')
|
||||||
|
= form_for 'user', :url => user_path, :html => { :method => :put } do |f|
|
||||||
|
= f.error_messages
|
||||||
|
%p
|
||||||
|
= f.label :current_password, t('.current_password')
|
||||||
|
= f.password_field :current_password, :placeholder => t('.current_password_expl')
|
||||||
|
%p
|
||||||
|
= f.label :password, t('.new_password')
|
||||||
|
= f.password_field :password, :placeholder => t('.character_minimum_expl')
|
||||||
|
%p
|
||||||
|
= f.label :password_confirmation, t('password_confirmation')
|
||||||
|
= f.password_field :password_confirmation, :placeholder => t('.character_minimum_expl')
|
||||||
|
|
||||||
|
.submit_block
|
||||||
|
= f.submit t('.change_password'), :class => "btn"
|
||||||
|
|
||||||
|
%hr
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('.change_language')
|
||||||
|
= form_for 'user', :url => user_path, :html => { :method => :put } do |f|
|
||||||
|
= f.error_messages
|
||||||
|
|
||||||
|
%p
|
||||||
|
= f.select :language, available_language_options
|
||||||
|
= f.submit t('.change_language'), :class => "btn"
|
||||||
|
|
||||||
|
%hr
|
||||||
|
|
||||||
|
%h4#stream-preferences
|
||||||
|
= t('.stream_preferences')
|
||||||
|
= form_for current_user, :url => user_path, :html => { :method => :put } do |f|
|
||||||
|
= f.error_messages
|
||||||
|
|
||||||
|
%p.checkbox_select
|
||||||
|
= f.label :show_community_spotlight_in_stream, t('.show_community_spotlight')
|
||||||
|
= f.check_box :show_community_spotlight_in_stream
|
||||||
|
|
||||||
|
%br
|
||||||
|
= f.submit t('.change'), :class => 'btn'
|
||||||
|
|
||||||
|
%hr
|
||||||
|
|
||||||
|
%h4#auto-follow-back-preferences
|
||||||
|
= t('.following')
|
||||||
|
= form_for current_user, :url => user_path, :html => { :method => :put } do |f|
|
||||||
|
= f.error_messages
|
||||||
|
|
||||||
|
%p.checkbox_select
|
||||||
|
= f.label :auto_follow_back, t('.auto_follow_back')
|
||||||
|
= f.check_box :auto_follow_back
|
||||||
|
%br
|
||||||
|
%p.checkbox_select
|
||||||
|
%span{:style => "color: #999"}
|
||||||
|
= t('.auto_follow_aspect')
|
||||||
|
= f.select :auto_follow_back_aspect_id, aspect_options_for_select(current_user.aspects)
|
||||||
|
%br
|
||||||
|
= f.submit t('.change'), :class => 'btn'
|
||||||
|
|
||||||
|
%hr
|
||||||
|
|
||||||
|
%h4#getting-started-preferences
|
||||||
|
= t('.show_getting_started')
|
||||||
|
= form_for current_user, :url => user_path, :html => { :method => :put } do |f|
|
||||||
|
= f.error_messages
|
||||||
|
|
||||||
|
%p.checkbox_select
|
||||||
|
= f.label :getting_started, t('.show_getting_started')
|
||||||
|
= f.check_box :getting_started
|
||||||
|
%br
|
||||||
|
= f.submit t('.change'), :class => 'btn'
|
||||||
|
|
||||||
|
%hr
|
||||||
|
|
||||||
|
%h4
|
||||||
|
= t('.receive_email_notifications')
|
||||||
|
= form_for 'user', :url => user_path, :html => { :method => :put } do |f|
|
||||||
|
= f.error_messages
|
||||||
|
|
||||||
|
= f.fields_for :email_preferences do |type|
|
||||||
|
#email_prefs
|
||||||
|
%p.checkbox_select
|
||||||
|
= type.label :also_commented, t('.also_commented')
|
||||||
|
= type.check_box :also_commented, {:checked => @email_prefs['also_commented']}, false, true
|
||||||
|
%br
|
||||||
|
%p.checkbox_select
|
||||||
|
= type.label :mentioned, t('.mentioned')
|
||||||
|
= type.check_box :mentioned, {:checked => @email_prefs['mentioned']}, false, true
|
||||||
|
|
||||||
|
|
||||||
|
%br
|
||||||
|
%p.checkbox_select
|
||||||
|
= type.label :comment_on_post, t('.comment_on_post')
|
||||||
|
= type.check_box :comment_on_post, {:checked => @email_prefs['comment_on_post']}, false, true
|
||||||
|
|
||||||
|
%br
|
||||||
|
%p.checkbox_select
|
||||||
|
= type.label :private_message, t('.private_message')
|
||||||
|
= type.check_box :private_message, {:checked => @email_prefs['private_message']}, false, true
|
||||||
|
|
||||||
|
%br
|
||||||
|
%p.checkbox_select
|
||||||
|
= type.label :started_sharing, t('.started_sharing')
|
||||||
|
= type.check_box :started_sharing, {:checked => @email_prefs['started_sharing']}, false, true
|
||||||
|
|
||||||
|
%br
|
||||||
|
%p.checkbox_select
|
||||||
|
= type.label :liked, t('.liked')
|
||||||
|
= type.check_box :liked, {:checked => @email_prefs['liked']}, false, true
|
||||||
|
|
||||||
|
%br
|
||||||
|
%p.checkbox_select
|
||||||
|
= type.label :reshared, t('.reshared')
|
||||||
|
= type.check_box :reshared, {:checked => @email_prefs['reshared']}, false, true
|
||||||
|
%br
|
||||||
|
= f.submit t('.change'), :class => "btn"
|
||||||
|
|
||||||
|
%hr
|
||||||
|
|
||||||
|
#account_data.span-5.append-2
|
||||||
|
%h4
|
||||||
|
= t('.export_data')
|
||||||
|
= link_to t('.download_xml'), export_user_path, :class => "btn"
|
||||||
|
%br
|
||||||
|
%br
|
||||||
|
= link_to t('.download_photos'), "#", :class => "btn", :id => "photo-export-button", :title => t('.photo_export_unavailable')
|
||||||
|
|
||||||
|
.span-5.last
|
||||||
|
%h4
|
||||||
|
= t('.close_account_text')
|
||||||
|
=link_to t('.close_account_text'), '#close_account_pane', :rel => 'facebox', :class => "btn"
|
||||||
|
|
||||||
|
.hidden#close_account_pane{:rel => 'facebox'}
|
||||||
|
#inner_account_delete
|
||||||
|
%h1
|
||||||
|
= t('.close_account.dont_go')
|
||||||
|
%p
|
||||||
|
= t('.close_account.make_diaspora_better')
|
||||||
|
.span-10
|
||||||
|
= image_tag 'http://itstrulyrandom.com/wp-content/uploads/2008/03/sadcat.jpg'
|
||||||
|
%br
|
||||||
|
%small
|
||||||
|
%b
|
||||||
|
= t('.close_account.mr_wiggles')
|
||||||
|
.span-10.last
|
||||||
|
%ul
|
||||||
|
%li
|
||||||
|
= t('.close_account.what_we_delete')
|
||||||
|
%li
|
||||||
|
= t('.close_account.locked_out')
|
||||||
|
%li
|
||||||
|
= t('.close_account.lock_username')
|
||||||
|
%li
|
||||||
|
= t('.close_account.no_turning_back')
|
||||||
|
%p
|
||||||
|
%b
|
||||||
|
= t('.close_account.no_turning_back')
|
||||||
|
|
||||||
|
|
||||||
|
= form_for 'user', :url => user_path, :html => { :method => :delete } do |f|
|
||||||
|
= f.error_messages
|
||||||
|
|
||||||
|
%p
|
||||||
|
= f.label :close_account_password, t('.current_password'), :for => :close_account_password
|
||||||
|
= f.password_field :current_password, :id => :close_account_password
|
||||||
|
%p
|
||||||
|
= f.submit t('.close_account_text'), :data => { :confirm => t('are_you_sure_delete_account') }
|
||||||
|
|
@ -119,6 +119,13 @@ describe UsersController do
|
||||||
Resque.stub!(:enqueue)
|
Resque.stub!(:enqueue)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'disallow the user to change his new (unconfirmed) mail when it is the same as the old' do
|
||||||
|
@user.email = "my@newemail.com"
|
||||||
|
put(:update, :id => @user.id, :user => { :email => "my@newemail.com"})
|
||||||
|
@user.reload
|
||||||
|
@user.unconfirmed_email.should eql(nil)
|
||||||
|
end
|
||||||
|
|
||||||
it 'allow the user to change his (unconfirmed) email' do
|
it 'allow the user to change his (unconfirmed) email' do
|
||||||
put(:update, :id => @user.id, :user => { :email => "my@newemail.com"})
|
put(:update, :id => @user.id, :user => { :email => "my@newemail.com"})
|
||||||
@user.reload
|
@user.reload
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue