@@ -104,6 +104,7 @@ type User struct { | |||||
Rands string `xorm:"VARCHAR(10)"` | Rands string `xorm:"VARCHAR(10)"` | ||||
Salt string `xorm:"VARCHAR(10)"` | Salt string `xorm:"VARCHAR(10)"` | ||||
Language string `xorm:"VARCHAR(5)"` | Language string `xorm:"VARCHAR(5)"` | ||||
Description string | |||||
CreatedUnix util.TimeStamp `xorm:"INDEX created"` | CreatedUnix util.TimeStamp `xorm:"INDEX created"` | ||||
UpdatedUnix util.TimeStamp `xorm:"INDEX updated"` | UpdatedUnix util.TimeStamp `xorm:"INDEX updated"` | ||||
@@ -134,12 +135,11 @@ type User struct { | |||||
NumRepos int | NumRepos int | ||||
// For organization | // For organization | ||||
Description string | |||||
NumTeams int | |||||
NumMembers int | |||||
Teams []*Team `xorm:"-"` | |||||
Members []*User `xorm:"-"` | |||||
Visibility structs.VisibleType `xorm:"NOT NULL DEFAULT 0"` | |||||
NumTeams int | |||||
NumMembers int | |||||
Teams []*Team `xorm:"-"` | |||||
Members []*User `xorm:"-"` | |||||
Visibility structs.VisibleType `xorm:"NOT NULL DEFAULT 0"` | |||||
// Preferences | // Preferences | ||||
DiffViewStyle string `xorm:"NOT NULL DEFAULT ''"` | DiffViewStyle string `xorm:"NOT NULL DEFAULT ''"` | ||||
@@ -201,6 +201,7 @@ type UpdateProfileForm struct { | |||||
Website string `binding:"ValidUrl;MaxSize(255)"` | Website string `binding:"ValidUrl;MaxSize(255)"` | ||||
Location string `binding:"MaxSize(50)"` | Location string `binding:"MaxSize(50)"` | ||||
Language string `binding:"Size(5)"` | Language string `binding:"Size(5)"` | ||||
Description string `binding:"MaxSize(255)"` | |||||
} | } | ||||
// Validate validates the fields | // Validate validates the fields | ||||
@@ -334,6 +334,7 @@ following = Following | |||||
follow = Follow | follow = Follow | ||||
unfollow = Unfollow | unfollow = Unfollow | ||||
heatmap.loading = Loading Heatmap… | heatmap.loading = Loading Heatmap… | ||||
user_bio = Biography | |||||
form.name_reserved = The username '%s' is reserved. | form.name_reserved = The username '%s' is reserved. | ||||
form.name_pattern_not_allowed = The pattern '%s' is not allowed in a username. | form.name_pattern_not_allowed = The pattern '%s' is not allowed in a username. | ||||
@@ -92,6 +92,7 @@ func ProfilePost(ctx *context.Context, form auth.UpdateProfileForm) { | |||||
ctx.User.Website = form.Website | ctx.User.Website = form.Website | ||||
ctx.User.Location = form.Location | ctx.User.Location = form.Location | ||||
ctx.User.Language = form.Language | ctx.User.Language = form.Language | ||||
ctx.User.Description = form.Description | |||||
if err := models.UpdateUserSetting(ctx.User); err != nil { | if err := models.UpdateUserSetting(ctx.User); err != nil { | ||||
if _, ok := err.(models.ErrEmailAlreadyUsed); ok { | if _, ok := err.(models.ErrEmailAlreadyUsed); ok { | ||||
ctx.Flash.Error(ctx.Tr("form.email_been_used")) | ctx.Flash.Error(ctx.Tr("form.email_been_used")) | ||||
@@ -34,6 +34,12 @@ | |||||
<a target="_blank" rel="noopener noreferrer me" href="{{.Owner.Website}}">{{.Owner.Website}}</a> | <a target="_blank" rel="noopener noreferrer me" href="{{.Owner.Website}}">{{.Owner.Website}}</a> | ||||
</li> | </li> | ||||
{{end}} | {{end}} | ||||
{{if .Owner.Description}} | |||||
<li> | |||||
<i class="octicon octicon-info"></i> | |||||
<span>{{.Owner.Description}}</span> | |||||
</li> | |||||
{{end}} | |||||
{{range .OpenIDs}} | {{range .OpenIDs}} | ||||
{{if .Show}} | {{if .Show}} | ||||
<li> | <li> | ||||
@@ -31,6 +31,10 @@ | |||||
<input name="keep_email_private" type="checkbox" {{if .SignedUser.KeepEmailPrivate}}checked{{end}}> | <input name="keep_email_private" type="checkbox" {{if .SignedUser.KeepEmailPrivate}}checked{{end}}> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="field {{if .Err_Description}}error{{end}}"> | |||||
<label for="description">{{$.i18n.Tr "user.user_bio"}}</label> | |||||
<textarea id="description" name="description" rows="2">{{.SignedUser.Description}}</textarea> | |||||
</div> | |||||
<div class="field {{if .Err_Website}}error{{end}}"> | <div class="field {{if .Err_Website}}error{{end}}"> | ||||
<label for="website">{{.i18n.Tr "settings.website"}}</label> | <label for="website">{{.i18n.Tr "settings.website"}}</label> | ||||
<input id="website" name="website" type="url" value="{{.SignedUser.Website}}"> | <input id="website" name="website" type="url" value="{{.SignedUser.Website}}"> | ||||