Compare commits
14 Commits
Author | SHA1 | Date |
---|---|---|
AJ ONeal | de85108909 | |
AJ ONeal | dbd197976b | |
AJ ONeal | 0994704e2e | |
AJ ONeal | 685995b1ca | |
AJ ONeal | 279f4b65f8 | |
AJ ONeal | db970dcf06 | |
AJ ONeal | 0b85f74e79 | |
techknowlogick | 31a738b221 | |
AJ ONeal | ef263718b8 | |
AJ ONeal | f432d95ed5 | |
AJ ONeal | 18ee6f3ed7 | |
AJ ONeal | b3d5fec6b2 | |
AJ ONeal | ce9f757a38 | |
AJ ONeal | 9d3690f8df |
16
CHANGELOG.md
16
CHANGELOG.md
|
@ -4,6 +4,22 @@ This changelog goes through all the changes that have been made in each release
|
||||||
without substantial changes to our git log; to see the highlights of what has
|
without substantial changes to our git log; to see the highlights of what has
|
||||||
been added to each release, please refer to the [blog](https://blog.gitea.io).
|
been added to each release, please refer to the [blog](https://blog.gitea.io).
|
||||||
|
|
||||||
|
## [1.5.2](https://github.com/go-gitea/gitea/releases/tag/v1.5.2) - 2018-10-09
|
||||||
|
* SECURITY
|
||||||
|
* Enforce token on api routes (#4840) (#4905)
|
||||||
|
* BUGFIXES
|
||||||
|
* Remove links from topics in edit mode (#5030)
|
||||||
|
* Detect charset and convert non UTF-8 files for display (#4950) (#4994)
|
||||||
|
* Fix layout of the topics editing form (#4971) (#4993)
|
||||||
|
* Fix null pointer dereference in ParseCommitWithSignature (#4964)
|
||||||
|
* Fix url in discord webhook (#4951)
|
||||||
|
* Fix font-cropping UI bug in diff (#4726) (#4929)
|
||||||
|
* Fix bug forget to remove Stopwatch when remove repository (#4933)
|
||||||
|
* Fix bug when repo remained bare if multiple branches pushed (#4927)
|
||||||
|
* Fix redirect with non-ascii branch names (#4764) (#4887)
|
||||||
|
* Fix issues api allow pulls (#4852) (#4862)
|
||||||
|
* Fix trimming of markup section names (#4864)
|
||||||
|
|
||||||
## [1.5.1](https://github.com/go-gitea/gitea/releases/tag/v1.5.1) - 2018-09-03
|
## [1.5.1](https://github.com/go-gitea/gitea/releases/tag/v1.5.1) - 2018-09-03
|
||||||
* SECURITY
|
* SECURITY
|
||||||
* Don't disclose emails of all users when sending out emails (#4784)
|
* Don't disclose emails of all users when sending out emails (#4784)
|
||||||
|
|
|
@ -339,29 +339,6 @@
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
revision = "5f1c01d9f64b941dd9582c638279d046eda6ca31"
|
revision = "5f1c01d9f64b941dd9582c638279d046eda6ca31"
|
||||||
|
|
||||||
[[projects]]
|
|
||||||
name = "github.com/gorilla/context"
|
|
||||||
packages = ["."]
|
|
||||||
revision = "08b5f424b9271eedf6f9f0ce86cb9396ed337a42"
|
|
||||||
version = "v1.1.1"
|
|
||||||
|
|
||||||
[[projects]]
|
|
||||||
name = "github.com/gorilla/mux"
|
|
||||||
packages = ["."]
|
|
||||||
revision = "757bef944d0f21880861c2dd9c871ca543023cba"
|
|
||||||
|
|
||||||
[[projects]]
|
|
||||||
name = "github.com/gorilla/securecookie"
|
|
||||||
packages = ["."]
|
|
||||||
revision = "e59506cc896acb7f7bf732d4fdf5e25f7ccd8983"
|
|
||||||
version = "v1.1.1"
|
|
||||||
|
|
||||||
[[projects]]
|
|
||||||
name = "github.com/gorilla/sessions"
|
|
||||||
packages = ["."]
|
|
||||||
revision = "ca9ada44574153444b00d3fd9c8559e4cc95f896"
|
|
||||||
version = "v1.1"
|
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/issue9/identicon"
|
name = "github.com/issue9/identicon"
|
||||||
packages = ["."]
|
packages = ["."]
|
||||||
|
|
|
@ -40,14 +40,6 @@ ignored = ["google.golang.org/appengine*"]
|
||||||
#version = "0.6.5"
|
#version = "0.6.5"
|
||||||
revision = "ad69f7d8f0861a29438154bb0a20b60501298480"
|
revision = "ad69f7d8f0861a29438154bb0a20b60501298480"
|
||||||
|
|
||||||
[[override]]
|
|
||||||
name = "github.com/gorilla/mux"
|
|
||||||
revision = "757bef944d0f21880861c2dd9c871ca543023cba"
|
|
||||||
|
|
||||||
[[constraint]]
|
|
||||||
name = "github.com/gorilla/context"
|
|
||||||
version = "1.1.1"
|
|
||||||
|
|
||||||
[[constraint]]
|
[[constraint]]
|
||||||
name = "github.com/lafriks/xormstore"
|
name = "github.com/lafriks/xormstore"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
|
|
11
cmd/web.go
11
cmd/web.go
|
@ -20,7 +20,6 @@ import (
|
||||||
"code.gitea.io/gitea/routers/routes"
|
"code.gitea.io/gitea/routers/routes"
|
||||||
|
|
||||||
"github.com/Unknwon/com"
|
"github.com/Unknwon/com"
|
||||||
context2 "github.com/gorilla/context"
|
|
||||||
"github.com/urfave/cli"
|
"github.com/urfave/cli"
|
||||||
ini "gopkg.in/ini.v1"
|
ini "gopkg.in/ini.v1"
|
||||||
)
|
)
|
||||||
|
@ -64,7 +63,7 @@ func runHTTPRedirector() {
|
||||||
http.Redirect(w, r, target, http.StatusTemporaryRedirect)
|
http.Redirect(w, r, target, http.StatusTemporaryRedirect)
|
||||||
})
|
})
|
||||||
|
|
||||||
var err = runHTTP(source, context2.ClearHandler(handler))
|
var err = runHTTP(source, handler)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(4, "Failed to start port redirection: %v", err)
|
log.Fatal(4, "Failed to start port redirection: %v", err)
|
||||||
|
@ -141,19 +140,19 @@ func runWeb(ctx *cli.Context) error {
|
||||||
var err error
|
var err error
|
||||||
switch setting.Protocol {
|
switch setting.Protocol {
|
||||||
case setting.HTTP:
|
case setting.HTTP:
|
||||||
err = runHTTP(listenAddr, context2.ClearHandler(m))
|
err = runHTTP(listenAddr, m)
|
||||||
case setting.HTTPS:
|
case setting.HTTPS:
|
||||||
if setting.RedirectOtherPort {
|
if setting.RedirectOtherPort {
|
||||||
go runHTTPRedirector()
|
go runHTTPRedirector()
|
||||||
}
|
}
|
||||||
err = runHTTPS(listenAddr, setting.CertFile, setting.KeyFile, context2.ClearHandler(m))
|
err = runHTTPS(listenAddr, setting.CertFile, setting.KeyFile, m)
|
||||||
case setting.FCGI:
|
case setting.FCGI:
|
||||||
listener, err := net.Listen("tcp", listenAddr)
|
listener, err := net.Listen("tcp", listenAddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(4, "Failed to bind %s", listenAddr, err)
|
log.Fatal(4, "Failed to bind %s", listenAddr, err)
|
||||||
}
|
}
|
||||||
defer listener.Close()
|
defer listener.Close()
|
||||||
err = fcgi.Serve(listener, context2.ClearHandler(m))
|
err = fcgi.Serve(listener, m)
|
||||||
case setting.UnixSocket:
|
case setting.UnixSocket:
|
||||||
if err := os.Remove(listenAddr); err != nil && !os.IsNotExist(err) {
|
if err := os.Remove(listenAddr); err != nil && !os.IsNotExist(err) {
|
||||||
log.Fatal(4, "Failed to remove unix socket directory %s: %v", listenAddr, err)
|
log.Fatal(4, "Failed to remove unix socket directory %s: %v", listenAddr, err)
|
||||||
|
@ -169,7 +168,7 @@ func runWeb(ctx *cli.Context) error {
|
||||||
if err = os.Chmod(listenAddr, os.FileMode(setting.UnixSocketPermission)); err != nil {
|
if err = os.Chmod(listenAddr, os.FileMode(setting.UnixSocketPermission)); err != nil {
|
||||||
log.Fatal(4, "Failed to set permission of unix socket: %v", err)
|
log.Fatal(4, "Failed to set permission of unix socket: %v", err)
|
||||||
}
|
}
|
||||||
err = http.Serve(listener, context2.ClearHandler(m))
|
err = http.Serve(listener, m)
|
||||||
default:
|
default:
|
||||||
log.Fatal(4, "Invalid protocol: %s", setting.Protocol)
|
log.Fatal(4, "Invalid protocol: %s", setting.Protocol)
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,7 +73,7 @@ func SendActivateAccountMail(c *macaron.Context, u *User) {
|
||||||
|
|
||||||
// SendResetPasswordMail sends a password reset mail to the user
|
// SendResetPasswordMail sends a password reset mail to the user
|
||||||
func SendResetPasswordMail(c *macaron.Context, u *User) {
|
func SendResetPasswordMail(c *macaron.Context, u *User) {
|
||||||
SendUserMail(c, u, mailAuthResetPassword, u.GenerateActivateCode(), c.Tr("mail.reset_password"), "reset password")
|
SendUserMail(c, u, mailAuthResetPassword, u.GenerateActivateCode(), c.Tr("mail.reset_password"), "recover account")
|
||||||
}
|
}
|
||||||
|
|
||||||
// SendActivateEmailMail sends confirmation email to confirm new email address
|
// SendActivateEmailMail sends confirmation email to confirm new email address
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
app_desc = A painless, self-hosted Git service
|
app_desc = All Neo-Luddites and Lv. 99 Code Whisperers Welcome
|
||||||
|
|
||||||
home = Home
|
home = Home
|
||||||
dashboard = Dashboard
|
dashboard = Dashboard
|
||||||
|
@ -200,18 +200,19 @@ forgot_password_title= Forgot Password
|
||||||
forgot_password = Forgot password?
|
forgot_password = Forgot password?
|
||||||
sign_up_now = Need an account? Register now.
|
sign_up_now = Need an account? Register now.
|
||||||
confirmation_mail_sent_prompt = A new confirmation email has been sent to <b>%s</b>. Please check your inbox within the next %s to complete the registration process.
|
confirmation_mail_sent_prompt = A new confirmation email has been sent to <b>%s</b>. Please check your inbox within the next %s to complete the registration process.
|
||||||
reset_password_mail_sent_prompt = A confirmation email has been sent to <b>%s</b>. Please check your inbox within the next %s to complete the password reset process.
|
reset_password_mail_sent_prompt = A confirmation email has been sent to <b>%s</b>. Please check your inbox within the next %s to complete the account recovery process.
|
||||||
active_your_account = Activate Your Account
|
active_your_account = Activate Your Account
|
||||||
prohibit_login = Sign In Prohibited
|
prohibit_login = Sign In Prohibited
|
||||||
prohibit_login_desc = Your account is prohibited to sign in, please contact your site administrator.
|
prohibit_login_desc = Your account is prohibited to sign in, please contact your site administrator.
|
||||||
resent_limit_prompt = You have already requested an activation email recently. Please wait 3 minutes and try again.
|
resent_limit_prompt = You have already requested an activation email recently. Please wait 3 minutes and try again.
|
||||||
has_unconfirmed_mail = Hi %s, you have an unconfirmed email address (<b>%s</b>). If you haven't received a confirmation email or need to resend a new one, please click on the button below.
|
has_unconfirmed_mail = Hi %s, you have an unconfirmed email address (<b>%s</b>). If you haven't received a confirmation email or need to resend a new one, please click on the button below.
|
||||||
resend_mail = Click here to resend your activation email
|
resend_mail = Resend Activation Email
|
||||||
email_not_associate = The email address is not associated with any account.
|
email_not_associate = The email address is not associated with any account.
|
||||||
send_reset_mail = Click here to resend your password reset email
|
send_reset_mail = Send Account Recovery Email
|
||||||
reset_password = Reset Your Password
|
reset_password = Account Recovery
|
||||||
invalid_code = Your confirmation code is invalid or has expired.
|
invalid_code = Your confirmation code is invalid or has expired.
|
||||||
reset_password_helper = Click here to reset your password
|
reset_password_helper = Recover Account
|
||||||
|
reset_password_wrong_user = You are signed in as %s, but the account recovery link is for %s
|
||||||
password_too_short = Password length cannot be less than %d characters.
|
password_too_short = Password length cannot be less than %d characters.
|
||||||
non_local_account = Non-local users can not update their password through the Gitea web interface.
|
non_local_account = Non-local users can not update their password through the Gitea web interface.
|
||||||
verify = Verify
|
verify = Verify
|
||||||
|
@ -234,12 +235,12 @@ openid_connect_desc = The chosen OpenID URI is unknown. Associate it with a new
|
||||||
openid_register_title = Create new account
|
openid_register_title = Create new account
|
||||||
openid_register_desc = The chosen OpenID URI is unknown. Associate it with a new account here.
|
openid_register_desc = The chosen OpenID URI is unknown. Associate it with a new account here.
|
||||||
openid_signin_desc = Enter your OpenID URI. For example: https://anne.me, bob.openid.org.cn or gnusocial.net/carry.
|
openid_signin_desc = Enter your OpenID URI. For example: https://anne.me, bob.openid.org.cn or gnusocial.net/carry.
|
||||||
disable_forgot_password_mail = Password reset is disabled. Please contact your site administrator.
|
disable_forgot_password_mail = Account recovery is disabled. Please contact your site administrator.
|
||||||
|
|
||||||
[mail]
|
[mail]
|
||||||
activate_account = Please activate your account
|
activate_account = Please activate your account
|
||||||
activate_email = Verify your email address
|
activate_email = Verify your email address
|
||||||
reset_password = Reset your password
|
reset_password = Recover your account
|
||||||
register_success = Registration successful
|
register_success = Registration successful
|
||||||
register_notify = Welcome to Gitea
|
register_notify = Welcome to Gitea
|
||||||
|
|
||||||
|
@ -1497,7 +1498,7 @@ config.mail_notify = Enable Email Notifications
|
||||||
config.disable_key_size_check = Disable Minimum Key Size Check
|
config.disable_key_size_check = Disable Minimum Key Size Check
|
||||||
config.enable_captcha = Enable CAPTCHA
|
config.enable_captcha = Enable CAPTCHA
|
||||||
config.active_code_lives = Active Code Lives
|
config.active_code_lives = Active Code Lives
|
||||||
config.reset_password_code_lives = Reset Password Code Expiry Time
|
config.reset_password_code_lives = Recover Account Code Expiry Time
|
||||||
config.default_keep_email_private = Hide Email Addresses by Default
|
config.default_keep_email_private = Hide Email Addresses by Default
|
||||||
config.default_allow_create_organization = Allow Creation of Organizations by Default
|
config.default_allow_create_organization = Allow Creation of Organizations by Default
|
||||||
config.enable_timetracking = Enable Time Tracking
|
config.enable_timetracking = Enable Time Tracking
|
||||||
|
|
|
@ -184,10 +184,6 @@ func RegisterRoutes(m *macaron.Macaron) {
|
||||||
m.Get("/^:type(issues|pulls)$", reqSignIn, user.Issues)
|
m.Get("/^:type(issues|pulls)$", reqSignIn, user.Issues)
|
||||||
|
|
||||||
// ***** START: User *****
|
// ***** START: User *****
|
||||||
m.Group("/user", func() {
|
|
||||||
m.Get("/reset_password", user.ResetPasswd)
|
|
||||||
m.Post("/reset_password", user.ResetPasswdPost)
|
|
||||||
})
|
|
||||||
m.Group("/user", func() {
|
m.Group("/user", func() {
|
||||||
m.Get("/login", user.SignIn)
|
m.Get("/login", user.SignIn)
|
||||||
m.Post("/login", bindIgnErr(auth.SignInForm{}), user.SignInPost)
|
m.Post("/login", bindIgnErr(auth.SignInForm{}), user.SignInPost)
|
||||||
|
@ -295,6 +291,8 @@ func RegisterRoutes(m *macaron.Macaron) {
|
||||||
m.Any("/activate", user.Activate)
|
m.Any("/activate", user.Activate)
|
||||||
m.Any("/activate_email", user.ActivateEmail)
|
m.Any("/activate_email", user.ActivateEmail)
|
||||||
m.Get("/email2user", user.Email2User)
|
m.Get("/email2user", user.Email2User)
|
||||||
|
m.Get("/recover_account", user.ResetPasswd)
|
||||||
|
m.Post("/recover_account", user.ResetPasswdPost)
|
||||||
m.Get("/forgot_password", user.ForgotPasswd)
|
m.Get("/forgot_password", user.ForgotPasswd)
|
||||||
m.Post("/forgot_password", user.ForgotPasswdPost)
|
m.Post("/forgot_password", user.ForgotPasswdPost)
|
||||||
m.Get("/logout", user.SignOut)
|
m.Get("/logout", user.SignOut)
|
||||||
|
|
|
@ -1144,34 +1144,58 @@ func ForgotPasswdPost(ctx *context.Context) {
|
||||||
ctx.HTML(200, tplForgotPassword)
|
ctx.HTML(200, tplForgotPassword)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResetPasswd render the reset password page
|
// Keep consistent behavior between phases of account recovery
|
||||||
func ResetPasswd(ctx *context.Context) {
|
func commonResetPassword(ctx *context.Context) *models.User {
|
||||||
ctx.Data["Title"] = ctx.Tr("auth.reset_password")
|
|
||||||
|
|
||||||
// TODO for security and convenience, show the username / email here
|
|
||||||
|
|
||||||
code := ctx.Query("code")
|
code := ctx.Query("code")
|
||||||
if len(code) == 0 {
|
|
||||||
ctx.Error(404)
|
ctx.Data["Title"] = ctx.Tr("auth.reset_password")
|
||||||
return
|
|
||||||
}
|
|
||||||
ctx.Data["Code"] = code
|
ctx.Data["Code"] = code
|
||||||
|
|
||||||
|
if nil != ctx.User {
|
||||||
|
ctx.Data["user_signed_in"] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(code) == 0 {
|
||||||
|
ctx.Flash.Error(ctx.Tr("auth.invalid_code"))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fail early, don't frustrate the user
|
||||||
|
u := models.VerifyUserActiveCode(code)
|
||||||
|
if u == nil {
|
||||||
|
ctx.Flash.Error(ctx.Tr("auth.invalid_code"))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show the user that they are affecting the account that they intended to
|
||||||
|
ctx.Data["user_email"] = u.Email
|
||||||
|
|
||||||
|
if nil != ctx.User && u.ID != ctx.User.ID {
|
||||||
|
ctx.Flash.Error(ctx.Tr("auth.reset_password_wrong_user", ctx.User.Email, u.Email))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return u
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResetPasswd render the account recovery page
|
||||||
|
func ResetPasswd(ctx *context.Context) {
|
||||||
ctx.Data["IsResetForm"] = true
|
ctx.Data["IsResetForm"] = true
|
||||||
|
|
||||||
|
_ = commonResetPassword(ctx)
|
||||||
|
|
||||||
ctx.HTML(200, tplResetPassword)
|
ctx.HTML(200, tplResetPassword)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResetPasswdPost response from reset password request
|
// ResetPasswdPost response from account recovery request
|
||||||
func ResetPasswdPost(ctx *context.Context) {
|
func ResetPasswdPost(ctx *context.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("auth.reset_password")
|
u := commonResetPassword(ctx)
|
||||||
|
if nil == u {
|
||||||
code := ctx.Query("code")
|
// Flash Error has been set
|
||||||
if len(code) == 0 {
|
ctx.HTML(200, tplResetPassword)
|
||||||
ctx.Error(404)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Data["Code"] = code
|
|
||||||
|
|
||||||
if u := models.VerifyUserActiveCode(code); u != nil {
|
|
||||||
// Validate password length.
|
// Validate password length.
|
||||||
passwd := ctx.Query("password")
|
passwd := ctx.Query("password")
|
||||||
if len(passwd) < setting.MinPasswordLength {
|
if len(passwd) < setting.MinPasswordLength {
|
||||||
|
@ -1191,9 +1215,6 @@ func ResetPasswdPost(ctx *context.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Just in case the user is signed in to another account
|
|
||||||
handleSignOut(ctx)
|
|
||||||
|
|
||||||
u.HashPassword(passwd)
|
u.HashPassword(passwd)
|
||||||
if err := models.UpdateUserCols(u, "passwd", "rands", "salt"); err != nil {
|
if err := models.UpdateUserCols(u, "passwd", "rands", "salt"); err != nil {
|
||||||
ctx.ServerError("UpdateUser", err)
|
ctx.ServerError("UpdateUser", err)
|
||||||
|
@ -1202,12 +1223,6 @@ func ResetPasswdPost(ctx *context.Context) {
|
||||||
|
|
||||||
log.Trace("User password reset: %s", u.Name)
|
log.Trace("User password reset: %s", u.Name)
|
||||||
|
|
||||||
// TODO change the former form to have password retype and remember me,
|
remember := len(ctx.Query("remember")) != 0
|
||||||
// then sign in here instead of redirecting
|
handleSignInFull(ctx, u, remember, true)
|
||||||
ctx.Redirect(setting.AppSubURL + "/user/login")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
ctx.Data["IsResetFailed"] = true
|
|
||||||
ctx.HTML(200, tplResetPassword)
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
<footer>
|
<footer>
|
||||||
<div class="ui container">
|
<div class="ui container">
|
||||||
<div class="ui left">
|
<div class="ui left">
|
||||||
© Gitea {{if (or .ShowFooterVersion .PageIsAdmin)}}{{.i18n.Tr "version"}}: {{AppVer}}{{end}} {{if ShowFooterTemplateLoadTime}}{{.i18n.Tr "page"}}: <strong>{{LoadTimes .PageStartTime}}</strong> {{.i18n.Tr "template"}}: <strong>{{call .TmplLoadTimes}}</strong>{{end}}
|
© AJ ONeal, founder of <a target="_blank" href="https://ppl.family">ppl</a>.
|
||||||
|
Automated HTTPS via <a href="https://git.coolaj86.com/coolaj86/greenlock-express.js" target="_blank">Greenlock.js</a> and <a href="https://git.coolaj86.com/coolaj86/acme-v2.js" target="_blank">Let's Encrypt</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui right links">
|
<div class="ui right links">
|
||||||
{{if .ShowFooterBranding}}
|
{{if .ShowFooterBranding}}
|
||||||
|
@ -28,10 +29,12 @@
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a href="{{AppSubUrl}}/vendor/librejs.html" data-jslicense="1">JavaScript licenses</a>
|
| Powered by <a target="_blank" rel="noopener" href="https://gitea.io">Gitea</a> {{if (or .ShowFooterVersion .PageIsAdmin)}}: v{{AppVer}}{{end}}
|
||||||
{{if .EnableSwaggerEndpoint}}<a href="{{AppSubUrl}}/api/swagger">API</a>{{end}}
|
| {{if (or .ShowFooterVersion .PageIsAdmin)}}<span class="version">{{GoVer}}</span>{{end}}
|
||||||
<a target="_blank" rel="noopener" href="https://gitea.io">{{.i18n.Tr "website"}}</a>
|
<!--
|
||||||
{{if (or .ShowFooterVersion .PageIsAdmin)}}<span class="version">{{GoVer}}</span>{{end}}
|
| {{if ShowFooterTemplateLoadTime}}{{.i18n.Tr "page"}}: <strong>{{LoadTimes .PageStartTime}}</strong>
|
||||||
|
{{.i18n.Tr "template"}}: <strong>{{call .TmplLoadTimes}}</strong>{{end}} -->
|
||||||
|
| <a href="{{AppSubUrl}}/api/swagger">API</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
|
@ -7,348 +7,57 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="hero">
|
<div class="hero">
|
||||||
<h1 class="ui icon header title">
|
<h1 class="ui icon header title">
|
||||||
Gitea - Git with a cup of tea
|
Let's Code, Decentralized!
|
||||||
</h1>
|
</h1>
|
||||||
<h2>{{.i18n.Tr "app_desc"}}</h2>
|
<h2>Login with GitHub or
|
||||||
|
<br>Register a new account to contribute.</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{if eq .Lang "de-DE"}}
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
<div class="ui stackable middle very relaxed page grid">
|
||||||
<div class="eight wide center column">
|
<div class="eight wide center column">
|
||||||
<h1 class="hero ui icon header">
|
<h1 class="hero ui icon header">
|
||||||
<i class="octicon octicon-flame"></i> Einfach zu installieren
|
<i class="octicon octicon-git-branch"></i> Hurrah for Gitea!
|
||||||
</h1>
|
</h1>
|
||||||
<p class="large">
|
<p class="large">
|
||||||
Starte einfach <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-binary/">die Anwendung</a> für deine Plattform. Gitea gibt es auch für <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/tree/master/docker">Docker</a>, <a target="_blank" rel="noopener" href="https://github.com/alvaroaleman/ansible-gitea/blob/master/Vagrantfile">Vagrant</a> oder als <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-package/">Installationspaket</a>.
|
I'm using Gitea, which is likely to become the first decentralized git platform.
|
||||||
|
Help support decentralization by <a target="_blank"
|
||||||
|
href="https://git.coolaj86.com/coolaj86/gitea-installer.sh">installing gitea</a>
|
||||||
|
for yourself!
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="eight wide center column">
|
<div class="eight wide center column">
|
||||||
<h1 class="hero ui icon header">
|
<h1 class="hero ui icon header">
|
||||||
<i class="octicon octicon-device-desktop"></i> Plattformübergreifend
|
<i class="octicon octicon-circuit-board"></i> Hurrah for RPi!
|
||||||
</h1>
|
</h1>
|
||||||
<p class="large">
|
<p class="large">
|
||||||
Gitea läuft überall. <a target="_blank" rel="noopener" href="http://golang.org/">Go</a> kompiliert für: Windows, macOS, Linux, ARM, etc. Wähle dasjenige System, was dir am meisten gefällt!
|
Home servers are the only thing that can save us from our centralized overlords.
|
||||||
|
Gitea can run on a Raspberry Pi.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
<div class="ui stackable middle very relaxed page grid">
|
||||||
<div class="eight wide center column">
|
<div class="eight wide center column">
|
||||||
<h1 class="hero ui icon header">
|
<h1 class="hero ui icon header">
|
||||||
<i class="octicon octicon-rocket"></i> Leichtgewicht
|
<i class="octicon octicon-mail"></i> For Neo-Luddites
|
||||||
</h1>
|
</h1>
|
||||||
<p class="large">
|
<p class="large">
|
||||||
Gitea hat minimale Systemanforderungen und kann selbst auf einem günstigen und stromsparenden Raspberry Pi betrieben werden.
|
Email was the web's first decentralized and distributed protocol.
|
||||||
|
It may be old news, but its paradigms are the best hope for our futures.
|
||||||
|
If we don't take back the web soon then GitHub, Facebook, Slack, Medium,
|
||||||
|
etc will dictate our futures for us.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="eight wide center column">
|
<div class="eight wide center column">
|
||||||
<h1 class="hero ui icon header">
|
<h1 class="hero ui icon header">
|
||||||
<i class="octicon octicon-code"></i> Quelloffen
|
<i class="octicon octicon-code"></i> Lv. 99 Code Whisperers Welcome
|
||||||
</h1>
|
</h1>
|
||||||
<p class="large">
|
<p class="large">
|
||||||
Der komplette Code befindet sich auf <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/">GitHub</a>! Unterstütze uns bei der Verbesserung dieses Projekts. Trau dich!
|
If you love code more than build tools, we'll make fast friends. :)
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- should have one more of the above -->
|
||||||
</div>
|
</div>
|
||||||
{{else if eq .Lang "zh-TW"}}
|
<!-- the above may be repeated -->
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-flame"></i> 易安裝
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
直接用 <a target="_blank" rel="noopener" href="https://docs.gitea.io/zh-cn/install-from-binary/">執行檔安裝</a>,還可以透過 <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/tree/master/docker">Docker</a> 或 <a target="_blank" rel="noopener" href="https://github.com/alvaroaleman/ansible-gitea/blob/master/Vagrantfile">Vagrant</a>,以及 <a target="_blank" rel="noopener" href="https://docs.gitea.io/zh-cn/install-from-package/">套件</a>安装。
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-device-desktop"></i> 跨平台
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea 可以運作在任何 <a target="_blank" rel="noopener" href="http://golang.org/">Go 語言</a>能夠編譯的平台: Windows, macOS, Linux, ARM 等等。挑一個您喜歡的就好。
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-rocket"></i> 輕量級
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
一個便宜的樹莓派 Raspberry Pi 就可以滿足 Gitea 的最低系統需求,節省機器資源!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-code"></i> 開源化
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
所有程式碼都在 <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/">GitHub</a> 上,加入我們讓 Gitea 更好,別害羞,你可以做到的。
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{else if eq .Lang "zh-CN"}}
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-flame"></i> 易安装
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
您除了可以根据操作系统平台通过 <a target="_blank" rel="noopener" href="https://docs.gitea.io/zh-cn/install-from-binary/">二进制运行</a>,还可以通过 <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/tree/master/docker">Docker</a> 或 <a target="_blank" rel="noopener" href="https://github.com/alvaroaleman/ansible-gitea/blob/master/Vagrantfile">Vagrant</a>,以及 <a target="_blank" rel="noopener" href="https://docs.gitea.io/zh-cn/install-from-package/">包管理</a> 安装。
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-device-desktop"></i> 跨平台
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
任何 <a target="_blank" rel="noopener" href="http://golang.org/">Go 语言</a> 支持的平台都可以运行 Gitea,包括 Windows、Mac、Linux 以及 ARM。挑一个您喜欢的就行!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-rocket"></i> 轻量级
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
一个廉价的树莓派的配置足以满足 Gitea 的最低系统硬件要求。最大程度上节省您的服务器资源!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-code"></i> 开源化
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
所有的代码都开源在 <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/">GitHub</a> 上,赶快加入我们来共同发展这个伟大的项目!还等什么?成为贡献者吧!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{else if eq .Lang "fr-FR"}}
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-flame"></i> Facile à installer
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Il suffit de <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-binary/">lancer l'exécutable</a> correspondant à votre système.
|
|
||||||
Ou d'utiliser Gitea avec <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/tree/master/docker">Docker</a> ou
|
|
||||||
<a target="_blank" rel="noopener" href="https://github.com/alvaroaleman/ansible-gitea/blob/master/Vagrantfile">Vagrant</a>
|
|
||||||
ou en l'installant depuis un <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-package/">package</a>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-device-desktop"></i> Multi-plateforme
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea tourne partout où <a target="_blank" rel="noopener" href="http://golang.org/">Go</a> peut être compilé : Windows, macOS, Linux, ARM, etc. Choisissez votre préféré !
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-rocket"></i> Léger
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea utilise peu de ressources. Il peut même tourner sur un Raspberry Pi très bon marché. Économisez l'énergie de vos serveurs !
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-code"></i> Open Source
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Toutes les sources sont sur <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/">GitHub</a> ! Rejoignez-nous et contribuez à rendre ce projet encore meilleur.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{else if eq .Lang "es-ES"}}
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-flame"></i> Fácil de instalar
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Simplemente <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-binary/">arranca el binario</a> para tu plataforma. O usa Gitea con <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/tree/master/docker">Docker</a> o <a target="_blank" rel="noopener" href="https://github.com/alvaroaleman/ansible-gitea/blob/master/Vagrantfile">Vagrant</a>, o utilice el <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-package/">paquete</a>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-device-desktop"></i> Multiplatforma
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea funciona en cualquier parte, <a target="_blank" rel="noopener" href="http://golang.org/">Go</a> puede compilarse en: Windows, macOS, Linux, ARM, etc. !Elige tu favorita!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-rocket"></i> Ligero
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea tiene pocos requisitos y puede funcionar en una Raspberry Pi barata. !Ahorra energía!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-code"></i> Open Source
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
¡Está todo en <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/">GitHub</a>! Uniros contribuyendo a hacer este proyecto todavía mejor. ¡No seas tímido y colabora!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{else if eq .Lang "pt-BR"}}
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-flame"></i> Fácil de instalar
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Simplesmente <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-binary/">rode o executável</a> para o seu sistema operacional. Ou obtenha o Gitea com o <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/tree/master/docker">Docker</a> ou <a target="_blank" rel="noopener" href="https://github.com/alvaroaleman/ansible-gitea/blob/master/Vagrantfile">Vagrant</a>, ou baixe o <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-package/">pacote</a>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-device-desktop"></i> Multi-plataforma
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea roda em qualquer sistema operacional em que <a target="_blank" rel="noopener" href="http://golang.org/">Go</a> consegue compilar: Windows, macOS, Linux, ARM, etc. Escolha qual você gosta mais!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-rocket"></i> Leve e rápido
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea utiliza poucos recursos e consegue mesmo rodar no barato Raspberry Pi. Economize energia elétrica da sua máquina!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-code"></i> Código aberto
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Está tudo no <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/">GitHub</a>! Contribua e torne este projeto ainda melhor. Não tenha vergonha de contribuir!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{else if eq .Lang "ru-RU"}}
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-flame"></i> Простой в установке
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Просто <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-binary/">запустите исполняемый файл</a> для вашей платформы. Изпользуйте Gitea с <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/tree/master/docker">Docker</a> или <a target="_blank" rel="noopener" href="https://github.com/alvaroaleman/ansible-gitea/blob/master/Vagrantfile">Vagrant</a>, или загрузите <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-package/">пакет</a>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-device-desktop"></i> Кроссплатформенный
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea работает на любой операционной системе, которая может компилировать <a target="_blank" rel="noopener" href="http://golang.org/">Go</a>: Windows, macOS, Linux, ARM и т. д. Выбирайте, что вам больше нравится!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-rocket"></i> Легковесный
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea имеет низкие системные требования и может работать на недорогом Raspberry Pi. Экономьте энергию вашей машины!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-code"></i> Открытый исходный код
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Всё это на <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/">GitHub</a>! Присоединяйтесь к нам, внося вклад, чтобы сделать этот проект еще лучше. Не бойтесь помогать!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{else if eq .Lang "nl-NL"}}
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-flame"></i> Makkelijk te installeren
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Je hoeft alleen maar de <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-binary/">binary</a> uit te voeren. Of gebruik Gitea met <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/tree/master/docker">Docker</a>, <a target="_blank" rel="noopener" href="https://github.com/alvaroaleman/ansible-gitea/blob/master/Vagrantfile">Vagrant</a>, of download een <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-package/">installatiepakket</a>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-device-desktop"></i> Cross-platform
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea werkt op alles waar <a target="_blank" rel="noopener" href="http://golang.org/">Go</a> op kan compileren: Windows, macOS, Linux, ARM, etc. Kies het platform dat bij je past!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-rocket"></i> Lichtgewicht
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea heeft hele lage systeemeisen, je kunt Gitea al draaien op een goedkope Raspberry Pi.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-code"></i> Open Source
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Alles staat op <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/">GitHub</a>! Help ons door mee te bouwen aan Gitea, samen maken we dit project nog beter. Aarzel dus niet om een bijdrage te leveren!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{else}}
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-flame"></i> Easy to install
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Simply <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-binary/">run the binary</a> for your platform. Or ship Gitea with <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/tree/master/docker">Docker</a> or <a target="_blank" rel="noopener" href="https://github.com/alvaroaleman/ansible-gitea/blob/master/Vagrantfile">Vagrant</a>, or get it <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/install-from-package/">packaged</a>.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-device-desktop"></i> Cross-platform
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea runs anywhere <a target="_blank" rel="noopener" href="http://golang.org/">Go</a> can compile for: Windows, macOS, Linux, ARM, etc. Choose the one you love!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="ui stackable middle very relaxed page grid">
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-rocket"></i> Lightweight
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
Gitea has low minimal requirements and can run on an inexpensive Raspberry Pi. Save your machine energy!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div class="eight wide center column">
|
|
||||||
<h1 class="hero ui icon header">
|
|
||||||
<i class="octicon octicon-code"></i> Open Source
|
|
||||||
</h1>
|
|
||||||
<p class="large">
|
|
||||||
It's all on <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea/">GitHub</a>! Join us by contributing to make this project even better. Don't be shy to be a contributor!
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{{end}}
|
|
||||||
</div>
|
</div>
|
||||||
{{template "base/footer" .}}
|
{{template "base/footer" .}}
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<p>Hi <b>{{.Username}}</b>, this is your registration confirmation email for {{AppName}}!</p>
|
<p>Hi <b>{{.Username}}</b>, this is your registration confirmation email for {{AppName}}!</p>
|
||||||
<p>You can now login via username: {{.Username}}.</p>
|
<p>You can now login via username: {{.Username}}.</p>
|
||||||
<p><a href="{{AppUrl}}user/login">{{AppUrl}}user/login</a></p>
|
<p><a href="{{AppUrl}}user/login">{{AppUrl}}user/login</a></p>
|
||||||
<p>If this account has been created for you, please <a href="{{AppUrl}}user/forgot_password">reset your password</a> first.</p>
|
<p>If this account has been created for you, please <a href="{{AppUrl}}user/forgot_password">set your password</a> first.</p>
|
||||||
<p>© <a target="_blank" rel="noopener" href="{{AppUrl}}">{{AppName}}</a></p>
|
<p>© <a target="_blank" rel="noopener" href="{{AppUrl}}">{{AppName}}</a></p>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<title>{{.Username}}, you have requested to reset your password</title>
|
<title>{{.Username}}, you have requested to recover your account</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<p>Hi <b>{{.Username}}</b>,</p>
|
<p>Hi <b>{{.Username}}</b>,</p>
|
||||||
<p>Please click the following link to reset your password within <b>{{.ResetPwdCodeLives}}</b>:</p>
|
<p>Please click the following link to recover your account within <b>{{.ResetPwdCodeLives}}</b>:</p>
|
||||||
<p><a href="{{AppUrl}}user/reset_password?code={{.Code}}">{{AppUrl}}user/reset_password?code={{.Code}}</a></p>
|
<p><a href="{{AppUrl}}user/recover_account?code={{.Code}}">{{AppUrl}}user/recover_account?code={{.Code}}</a></p>
|
||||||
<p>Not working? Try copying and pasting it to your browser.</p>
|
<p>Not working? Try copying and pasting it to your browser.</p>
|
||||||
<p>© <a target="_blank" rel="noopener" href="{{AppUrl}}">{{AppName}}</a></p>
|
<p>© <a target="_blank" rel="noopener" href="{{AppUrl}}">{{AppName}}</a></p>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -10,11 +10,26 @@
|
||||||
</h2>
|
</h2>
|
||||||
<div class="ui attached segment">
|
<div class="ui attached segment">
|
||||||
{{template "base/alert" .}}
|
{{template "base/alert" .}}
|
||||||
|
{{if .user_email }}
|
||||||
|
<div class="inline field">
|
||||||
|
<label for="user_name">{{.i18n.Tr "email"}}</label>
|
||||||
|
<input id="user_name" type="text" value="{{ .user_email }}" disabled>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
{{if .IsResetForm}}
|
{{if .IsResetForm}}
|
||||||
<div class="required inline field {{if .Err_Password}}error{{end}}">
|
<div class="required inline field {{if .Err_Password}}error{{end}}">
|
||||||
<label for="password">{{.i18n.Tr "password"}}</label>
|
<label for="password">{{.i18n.Tr "password"}}</label>
|
||||||
<input id="password" name="password" type="password" value="{{.password}}" autocomplete="off" autofocus required>
|
<input id="password" name="password" type="password" value="{{.password}}" autocomplete="off" autofocus required>
|
||||||
</div>
|
</div>
|
||||||
|
{{if not .user_signed_in}}
|
||||||
|
<div class="inline field">
|
||||||
|
<label></label>
|
||||||
|
<div class="ui checkbox">
|
||||||
|
<label>{{.i18n.Tr "auth.remember_me"}}</label>
|
||||||
|
<input name="remember" type="checkbox">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
<div class="ui divider"></div>
|
<div class="ui divider"></div>
|
||||||
<div class="inline field">
|
<div class="inline field">
|
||||||
<label></label>
|
<label></label>
|
||||||
|
|
Loading…
Reference in New Issue