#1157 some avatar setting changes

- Allow to delete current avatar
This commit is contained in:
Unknwon 2016-03-05 00:51:51 -05:00
parent 2a931937a8
commit a2f13eae55
10 changed files with 79 additions and 46 deletions

View file

@ -8,6 +8,7 @@ import (
"errors"
"fmt"
"io/ioutil"
"os"
"strings"
"github.com/Unknwon/com"
@ -39,12 +40,13 @@ func Settings(ctx *middleware.Context) {
ctx.HTML(200, SETTINGS_PROFILE)
}
func handlerUsernameChange(ctx *middleware.Context, newName string) {
func handleUsernameChange(ctx *middleware.Context, newName string) {
// Non-local users are not allowed to change their username.
if len(newName) == 0 || !ctx.User.IsLocal() {
return
}
// Check if user name has been changed.
// Check if user name has been changed
if ctx.User.LowerName != strings.ToLower(newName) {
if err := models.ChangeUserName(ctx.User, newName); err != nil {
switch {
@ -67,7 +69,8 @@ func handlerUsernameChange(ctx *middleware.Context, newName string) {
}
log.Trace("User name changed: %s -> %s", ctx.User.Name, newName)
}
// In case it's just a case change.
// In case it's just a case change
ctx.User.Name = newName
ctx.User.LowerName = strings.ToLower(newName)
}
@ -81,7 +84,7 @@ func SettingsPost(ctx *middleware.Context, form auth.UpdateProfileForm) {
return
}
handlerUsernameChange(ctx, form.Name)
handleUsernameChange(ctx, form.Name)
if ctx.Written() {
return
}
@ -98,7 +101,8 @@ func SettingsPost(ctx *middleware.Context, form auth.UpdateProfileForm) {
ctx.Handle(500, "UpdateUser", err)
return
}
log.Trace("User setting updated: %s", ctx.User.Name)
log.Trace("User settings updated: %s", ctx.User.Name)
ctx.Flash.Success(ctx.Tr("settings.update_profile_success"))
ctx.Redirect(setting.AppSubUrl + "/user/settings")
}
@ -112,10 +116,11 @@ func UpdateAvatarSetting(ctx *middleware.Context, form auth.UploadAvatarForm, ct
if err != nil {
return fmt.Errorf("Avatar.Open: %v", err)
}
defer fr.Close()
data, err := ioutil.ReadAll(fr)
if err != nil {
return fmt.Errorf("ReadAll: %v", err)
return fmt.Errorf("ioutil.ReadAll: %v", err)
}
if _, ok := base.IsImageFile(data); !ok {
return errors.New(ctx.Tr("settings.uploaded_avatar_not_a_image"))
@ -124,9 +129,12 @@ func UpdateAvatarSetting(ctx *middleware.Context, form auth.UploadAvatarForm, ct
return fmt.Errorf("UploadAvatar: %v", err)
}
} else {
// In case no avatar at all.
if form.Enable && !com.IsFile(ctx.User.CustomAvatarPath()) {
return errors.New(ctx.Tr("settings.no_custom_avatar_available"))
// No avatar is uploaded but setting has been changed to enable,
// generate a random one when needed.
if form.Enable && !com.IsFile(ctxUser.CustomAvatarPath()) {
if err := ctxUser.GenerateRandomAvatar(); err != nil {
log.Error(4, "GenerateRandomAvatar[%d]: %v", ctxUser.Id, err)
}
}
}
@ -147,6 +155,16 @@ func SettingsAvatar(ctx *middleware.Context, form auth.UploadAvatarForm) {
ctx.Redirect(setting.AppSubUrl + "/user/settings")
}
func SettingsDeleteAvatar(ctx *middleware.Context) {
os.Remove(ctx.User.CustomAvatarPath())
ctx.User.UseCustomAvatar = false
if err := models.UpdateUser(ctx.User); err != nil {
ctx.Flash.Error(fmt.Sprintf("UpdateUser: %v", err))
}
ctx.Redirect(setting.AppSubUrl + "/user/settings")
}
func SettingsPassword(ctx *middleware.Context) {
ctx.Data["Title"] = ctx.Tr("settings")
ctx.Data["PageIsSettingsPassword"] = true