2014-08-14 10:12:21 +04:00
// Copyright 2014 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package org
import (
2014-09-04 15:17:00 +04:00
"github.com/Unknwon/com"
2014-08-14 10:12:21 +04:00
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/auth"
"github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/log"
"github.com/gogits/gogs/modules/middleware"
2014-09-14 21:35:22 +04:00
"github.com/gogits/gogs/modules/setting"
2014-08-14 10:12:21 +04:00
)
const (
SETTINGS_OPTIONS base . TplName = "org/settings/options"
SETTINGS_DELETE base . TplName = "org/settings/delete"
2014-09-04 15:17:00 +04:00
SETTINGS_HOOKS base . TplName = "org/settings/hooks"
2014-08-14 10:12:21 +04:00
)
func Settings ( ctx * middleware . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "org.settings" )
ctx . Data [ "PageIsSettingsOptions" ] = true
ctx . HTML ( 200 , SETTINGS_OPTIONS )
}
func SettingsPost ( ctx * middleware . Context , form auth . UpdateOrgSettingForm ) {
ctx . Data [ "Title" ] = ctx . Tr ( "org.settings" )
ctx . Data [ "PageIsSettingsOptions" ] = true
if ctx . HasError ( ) {
ctx . HTML ( 200 , SETTINGS_OPTIONS )
return
}
org := ctx . Org . Organization
// Check if organization name has been changed.
if org . Name != form . OrgUserName {
isExist , err := models . IsUserExist ( form . OrgUserName )
if err != nil {
ctx . Handle ( 500 , "IsUserExist" , err )
return
} else if isExist {
ctx . RenderWithErr ( ctx . Tr ( "form.username_been_taken" ) , SETTINGS_OPTIONS , & form )
return
} else if err = models . ChangeUserName ( org , form . OrgUserName ) ; err != nil {
if err == models . ErrUserNameIllegal {
ctx . Flash . Error ( ctx . Tr ( "form.illegal_username" ) )
2014-09-20 04:11:34 +04:00
ctx . Redirect ( setting . AppSubUrl + "/org/" + org . LowerName + "/settings" )
2014-08-14 10:12:21 +04:00
return
} else {
ctx . Handle ( 500 , "ChangeUserName" , err )
}
return
}
log . Trace ( "Organization name changed: %s -> %s" , org . Name , form . OrgUserName )
org . Name = form . OrgUserName
}
org . FullName = form . OrgFullName
org . Email = form . Email
org . Description = form . Description
org . Website = form . Website
org . Location = form . Location
org . Avatar = base . EncodeMd5 ( form . Avatar )
org . AvatarEmail = form . Avatar
if err := models . UpdateUser ( org ) ; err != nil {
ctx . Handle ( 500 , "UpdateUser" , err )
return
}
log . Trace ( "Organization setting updated: %s" , org . Name )
ctx . Flash . Success ( ctx . Tr ( "org.settings.update_setting_success" ) )
2014-09-20 04:11:34 +04:00
ctx . Redirect ( setting . AppSubUrl + "/org/" + org . Name + "/settings" )
2014-08-14 10:12:21 +04:00
}
func SettingsDelete ( ctx * middleware . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "org.settings" )
ctx . Data [ "PageIsSettingsDelete" ] = true
org := ctx . Org . Organization
if ctx . Req . Method == "POST" {
// TODO: validate password.
if err := models . DeleteOrganization ( org ) ; err != nil {
switch err {
case models . ErrUserOwnRepos :
ctx . Flash . Error ( ctx . Tr ( "form.org_still_own_repo" ) )
2014-09-20 04:11:34 +04:00
ctx . Redirect ( setting . AppSubUrl + "/org/" + org . LowerName + "/settings/delete" )
2014-08-14 10:12:21 +04:00
default :
ctx . Handle ( 500 , "DeleteOrganization" , err )
}
} else {
2014-10-07 03:12:52 +04:00
log . Trace ( "Organization deleted: %s" , org . Name )
2014-09-20 04:11:34 +04:00
ctx . Redirect ( setting . AppSubUrl + "/" )
2014-08-14 10:12:21 +04:00
}
return
}
ctx . HTML ( 200 , SETTINGS_DELETE )
}
2014-09-04 15:17:00 +04:00
func SettingsHooks ( ctx * middleware . Context ) {
ctx . Data [ "Title" ] = ctx . Tr ( "org.settings" )
ctx . Data [ "PageIsSettingsHooks" ] = true
// Delete web hook.
remove := com . StrTo ( ctx . Query ( "remove" ) ) . MustInt64 ( )
if remove > 0 {
if err := models . DeleteWebhook ( remove ) ; err != nil {
ctx . Handle ( 500 , "DeleteWebhook" , err )
return
}
ctx . Flash . Success ( ctx . Tr ( "repo.settings.remove_hook_success" ) )
ctx . Redirect ( ctx . Org . OrgLink + "/settings/hooks" )
return
}
ws , err := models . GetWebhooksByOrgId ( ctx . Org . Organization . Id )
if err != nil {
ctx . Handle ( 500 , "GetWebhooksByOrgId" , err )
return
}
ctx . Data [ "Webhooks" ] = ws
ctx . HTML ( 200 , SETTINGS_HOOKS )
}