Indent all templates with tabs

This commit improves templates readability, since all of them use consistent
indent with all template command blocks indented too.

1. Indents both HTML containers such as <div>, <p> and Go HTML template blocks
   such as {{if}} {{with}}

2. Cleans all trailing white-space

3. Adds trailing last line-break to each file
This commit is contained in:
Adam Strzelecki 2015-12-07 23:30:52 +01:00
parent dd8a06a397
commit da2585c11e
114 changed files with 5559 additions and 5551 deletions

View File

@ -1,164 +1,164 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="admin edit authentication"> <div class="admin edit authentication">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "admin/navbar" .}} {{template "admin/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.auths.edit"}} {{.i18n.Tr "admin.auths.edit"}}
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<input type="hidden" name="id" value="{{.Source.ID}}"> <input type="hidden" name="id" value="{{.Source.ID}}">
<div class="inline field"> <div class="inline field">
<label>{{$.i18n.Tr "admin.auths.auth_type"}}</label> <label>{{$.i18n.Tr "admin.auths.auth_type"}}</label>
<input type="hidden" name="type" value="{{.Source.Type}}"> <input type="hidden" name="type" value="{{.Source.Type}}">
<span>{{.Source.TypeName}}</span> <span>{{.Source.TypeName}}</span>
</div> </div>
<div class="required inline field {{if .Err_Name}}error{{end}}"> <div class="required inline field {{if .Err_Name}}error{{end}}">
<label for="name">{{.i18n.Tr "admin.auths.auth_name"}}</label> <label for="name">{{.i18n.Tr "admin.auths.auth_name"}}</label>
<input id="name" name="name" value="{{.Source.Name}}" autofocus required> <input id="name" name="name" value="{{.Source.Name}}" autofocus required>
</div> </div>
<!-- LDAP and DLDAP --> <!-- LDAP and DLDAP -->
{{if or .Source.IsLDAP .Source.IsDLDAP}} {{if or .Source.IsLDAP .Source.IsDLDAP}}
{{ $cfg:=.Source.LDAP }} {{ $cfg:=.Source.LDAP }}
<div class="required field"> <div class="required field">
<label for="host">{{.i18n.Tr "admin.auths.host"}}</label> <label for="host">{{.i18n.Tr "admin.auths.host"}}</label>
<input id="host" name="host" value="{{$cfg.Host}}" placeholder="e.g. mydomain.com" required> <input id="host" name="host" value="{{$cfg.Host}}" placeholder="e.g. mydomain.com" required>
</div> </div>
<div class="required field"> <div class="required field">
<label for="port">{{.i18n.Tr "admin.auths.port"}}</label> <label for="port">{{.i18n.Tr "admin.auths.port"}}</label>
<input id="port" name="port" value="{{$cfg.Port}}" placeholder="e.g. 636" required> <input id="port" name="port" value="{{$cfg.Port}}" placeholder="e.g. 636" required>
</div> </div>
{{if .Source.IsLDAP}} {{if .Source.IsLDAP}}
<div class="required field"> <div class="required field">
<label for="bind_dn">{{.i18n.Tr "admin.auths.bind_dn"}}</label> <label for="bind_dn">{{.i18n.Tr "admin.auths.bind_dn"}}</label>
<input id="bind_dn" name="bind_dn" value="{{$cfg.BindDN}}" placeholder="e.g. cn=Search,dc=mydomain,dc=com" required> <input id="bind_dn" name="bind_dn" value="{{$cfg.BindDN}}" placeholder="e.g. cn=Search,dc=mydomain,dc=com" required>
</div> </div>
<input class="fake" type="password"> <input class="fake" type="password">
<div class="required field"> <div class="required field">
<label for="bind_password">{{.i18n.Tr "admin.auths.bind_password"}}</label> <label for="bind_password">{{.i18n.Tr "admin.auths.bind_password"}}</label>
<input id="bind_password" name="bind_password" type="password" value="{{$cfg.BindPassword}}" required> <input id="bind_password" name="bind_password" type="password" value="{{$cfg.BindPassword}}" required>
<p class="help text red">{{.i18n.Tr "admin.auths.bind_password_helper"}}</p> <p class="help text red">{{.i18n.Tr "admin.auths.bind_password_helper"}}</p>
</div> </div>
<div class="required field"> <div class="required field">
<label for="user_base">{{.i18n.Tr "admin.auths.user_base"}}</label> <label for="user_base">{{.i18n.Tr "admin.auths.user_base"}}</label>
<input id="user_base" name="user_base" value="{{$cfg.UserBase}}" placeholder="e.g. ou=Users,dc=mydomain,dc=com" required> <input id="user_base" name="user_base" value="{{$cfg.UserBase}}" placeholder="e.g. ou=Users,dc=mydomain,dc=com" required>
</div> </div>
{{end}} {{end}}
{{if .Source.IsDLDAP}} {{if .Source.IsDLDAP}}
<div class="required field"> <div class="required field">
<label for="user_dn">{{.i18n.Tr "admin.auths.user_dn"}}</label> <label for="user_dn">{{.i18n.Tr "admin.auths.user_dn"}}</label>
<input id="user_dn" name="user_dn" value="{{$cfg.UserDN}}" placeholder="e.g. uid=%s,ou=Users,dc=mydomain,dc=com" required> <input id="user_dn" name="user_dn" value="{{$cfg.UserDN}}" placeholder="e.g. uid=%s,ou=Users,dc=mydomain,dc=com" required>
</div> </div>
{{end}} {{end}}
<div class="required field"> <div class="required field">
<label for="filter">{{.i18n.Tr "admin.auths.filter"}}</label> <label for="filter">{{.i18n.Tr "admin.auths.filter"}}</label>
<input id="filter" name="filter" value="{{$cfg.Filter}}" placeholder="e.g. (&(objectClass=posixAccount)(uid=%s))" required> <input id="filter" name="filter" value="{{$cfg.Filter}}" placeholder="e.g. (&(objectClass=posixAccount)(uid=%s))" required>
</div> </div>
<div class="field"> <div class="field">
<label for="admin_filter">{{.i18n.Tr "admin.auths.admin_filter"}}</label> <label for="admin_filter">{{.i18n.Tr "admin.auths.admin_filter"}}</label>
<input id="admin_filter" name="admin_filter" value="{{$cfg.AdminFilter}}"> <input id="admin_filter" name="admin_filter" value="{{$cfg.AdminFilter}}">
</div> </div>
<div class="field"> <div class="field">
<label for="attribute_username">{{.i18n.Tr "admin.auths.attribute_username"}}</label> <label for="attribute_username">{{.i18n.Tr "admin.auths.attribute_username"}}</label>
<input id="attribute_username" name="attribute_username" value="{{$cfg.AttributeUsername}}" placeholder="{{.i18n.Tr "admin.auths.attribute_username_placeholder"}}"> <input id="attribute_username" name="attribute_username" value="{{$cfg.AttributeUsername}}" placeholder="{{.i18n.Tr "admin.auths.attribute_username_placeholder"}}">
</div> </div>
<div class="field"> <div class="field">
<label for="attribute_name">{{.i18n.Tr "admin.auths.attribute_name"}}</label> <label for="attribute_name">{{.i18n.Tr "admin.auths.attribute_name"}}</label>
<input id="attribute_name" name="attribute_name" value="{{$cfg.AttributeName}}"> <input id="attribute_name" name="attribute_name" value="{{$cfg.AttributeName}}">
</div> </div>
<div class="field"> <div class="field">
<label for="attribute_surname">{{.i18n.Tr "admin.auths.attribute_surname"}}</label> <label for="attribute_surname">{{.i18n.Tr "admin.auths.attribute_surname"}}</label>
<input id="attribute_surname" name="attribute_surname" value="{{$cfg.AttributeSurname}}"> <input id="attribute_surname" name="attribute_surname" value="{{$cfg.AttributeSurname}}">
</div> </div>
<div class="required field"> <div class="required field">
<label for="attribute_mail">{{.i18n.Tr "admin.auths.attribute_mail"}}</label> <label for="attribute_mail">{{.i18n.Tr "admin.auths.attribute_mail"}}</label>
<input id="attribute_mail" name="attribute_mail" value="{{$cfg.AttributeMail}}" placeholder="e.g. mail" required> <input id="attribute_mail" name="attribute_mail" value="{{$cfg.AttributeMail}}" placeholder="e.g. mail" required>
</div> </div>
{{end}} {{end}}
<!-- SMTP --> <!-- SMTP -->
{{if .Source.IsSMTP}} {{if .Source.IsSMTP}}
{{ $cfg:=.Source.SMTP }} {{ $cfg:=.Source.SMTP }}
<div class="inline required field"> <div class="inline required field">
<label>{{.i18n.Tr "admin.auths.smtp_auth"}}</label> <label>{{.i18n.Tr "admin.auths.smtp_auth"}}</label>
<div class="ui selection type dropdown"> <div class="ui selection type dropdown">
<input type="hidden" id="smtp_auth" name="smtp_auth" value="{{$cfg.Auth}}" required> <input type="hidden" id="smtp_auth" name="smtp_auth" value="{{$cfg.Auth}}" required>
<div class="text">{{$cfg.Auth}}</div> <div class="text">{{$cfg.Auth}}</div>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
{{range .SMTPAuths}} {{range .SMTPAuths}}
<div class="item" data-value="{{.}}">{{.}}</div> <div class="item" data-value="{{.}}">{{.}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
<div class="required field"> <div class="required field">
<label for="smtp_host">{{.i18n.Tr "admin.auths.smtphost"}}</label> <label for="smtp_host">{{.i18n.Tr "admin.auths.smtphost"}}</label>
<input id="smtp_host" name="smtp_host" value="{{$cfg.Host}}" required> <input id="smtp_host" name="smtp_host" value="{{$cfg.Host}}" required>
</div> </div>
<div class="required field"> <div class="required field">
<label for="smtp_port">{{.i18n.Tr "admin.auths.smtpport"}}</label> <label for="smtp_port">{{.i18n.Tr "admin.auths.smtpport"}}</label>
<input id="smtp_port" name="smtp_port" value="{{$cfg.Port}}" required> <input id="smtp_port" name="smtp_port" value="{{$cfg.Port}}" required>
</div> </div>
<div class="field"> <div class="field">
<label for="allowed_domains">{{.i18n.Tr "admin.auths.allowed_domains"}}</label> <label for="allowed_domains">{{.i18n.Tr "admin.auths.allowed_domains"}}</label>
<input id="allowed_domains" name="allowed_domains" value="{{$cfg.AllowedDomains}}"> <input id="allowed_domains" name="allowed_domains" value="{{$cfg.AllowedDomains}}">
<p class="help">{{.i18n.Tr "admin.auths.allowed_domains_helper"}}</p> <p class="help">{{.i18n.Tr "admin.auths.allowed_domains_helper"}}</p>
</div> </div>
{{end}} {{end}}
<!-- PAM --> <!-- PAM -->
{{if .Source.IsPAM}} {{if .Source.IsPAM}}
{{ $cfg:=.Source.PAM }} {{ $cfg:=.Source.PAM }}
<div class="required field"> <div class="required field">
<label for="pam_service_name">{{.i18n.Tr "admin.auths.pam_service_name"}}</label> <label for="pam_service_name">{{.i18n.Tr "admin.auths.pam_service_name"}}</label>
<input id="pam_service_name" name="pam_service_name" value="{{$cfg.ServiceName}}" required> <input id="pam_service_name" name="pam_service_name" value="{{$cfg.ServiceName}}" required>
</div> </div>
{{end}} {{end}}
<div class="inline field {{if not (or (or .Source.IsLDAP .Source.IsDLDAP) .Source.IsSMTP)}}hide{{end}}"> <div class="inline field {{if not (or (or .Source.IsLDAP .Source.IsDLDAP) .Source.IsSMTP)}}hide{{end}}">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.auths.enable_tls"}}</strong></label> <label><strong>{{.i18n.Tr "admin.auths.enable_tls"}}</strong></label>
<input name="tls" type="checkbox" {{if .Source.UseTLS}}checked{{end}}> <input name="tls" type="checkbox" {{if .Source.UseTLS}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field {{if not (or (or .Source.IsLDAP .Source.IsDLDAP) .Source.IsSMTP)}}hide{{end}}"> <div class="inline field {{if not (or (or .Source.IsLDAP .Source.IsDLDAP) .Source.IsSMTP)}}hide{{end}}">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.auths.skip_tls_verify"}}</strong></label> <label><strong>{{.i18n.Tr "admin.auths.skip_tls_verify"}}</strong></label>
<input name="skip_verify" type="checkbox" {{if .Source.SkipVerify}}checked{{end}}> <input name="skip_verify" type="checkbox" {{if .Source.SkipVerify}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.auths.activated"}}</strong></label> <label><strong>{{.i18n.Tr "admin.auths.activated"}}</strong></label>
<input name="is_active" type="checkbox" {{if .Source.IsActived}}checked{{end}}> <input name="is_active" type="checkbox" {{if .Source.IsActived}}checked{{end}}>
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<button class="ui green button">{{.i18n.Tr "admin.auths.update"}}</button> <button class="ui green button">{{.i18n.Tr "admin.auths.update"}}</button>
<div class="ui red button delete-button" data-url="{{$.Link}}/delete" data-id="{{.Source.ID}}">{{.i18n.Tr "admin.auths.delete"}}</div> <div class="ui red button delete-button" data-url="{{$.Link}}/delete" data-id="{{.Source.ID}}">{{.i18n.Tr "admin.auths.delete"}}</div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="ui small basic delete modal"> <div class="ui small basic delete modal">
<div class="ui icon header"> <div class="ui icon header">
<i class="trash icon"></i> <i class="trash icon"></i>
{{.i18n.Tr "admin.auths.delete_auth_title"}} {{.i18n.Tr "admin.auths.delete_auth_title"}}
</div> </div>
<div class="content"> <div class="content">
<p>{{.i18n.Tr "admin.auths.delete_auth_desc"}}</p> <p>{{.i18n.Tr "admin.auths.delete_auth_desc"}}</p>
</div> </div>
{{template "base/delete_modal_actions" .}} {{template "base/delete_modal_actions" .}}
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,46 +1,46 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="admin authentication"> <div class="admin authentication">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "admin/navbar" .}} {{template "admin/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.auths.auth_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) {{.i18n.Tr "admin.auths.auth_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}})
<div class="ui right"> <div class="ui right">
<a class="ui blue tiny button" href="{{AppSubUrl}}/admin/auths/new">{{.i18n.Tr "admin.auths.new"}}</a> <a class="ui blue tiny button" href="{{AppSubUrl}}/admin/auths/new">{{.i18n.Tr "admin.auths.new"}}</a>
</div> </div>
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<table class="ui very basic striped table"> <table class="ui very basic striped table">
<thead> <thead>
<tr> <tr>
<th>ID</th> <th>ID</th>
<th>{{.i18n.Tr "admin.auths.name"}}</th> <th>{{.i18n.Tr "admin.auths.name"}}</th>
<th>{{.i18n.Tr "admin.auths.type"}}</th> <th>{{.i18n.Tr "admin.auths.type"}}</th>
<th>{{.i18n.Tr "admin.auths.enabled"}}</th> <th>{{.i18n.Tr "admin.auths.enabled"}}</th>
<th>{{.i18n.Tr "admin.auths.updated"}}</th> <th>{{.i18n.Tr "admin.auths.updated"}}</th>
<th>{{.i18n.Tr "admin.users.created"}}</th> <th>{{.i18n.Tr "admin.users.created"}}</th>
<th>{{.i18n.Tr "admin.users.edit"}}</th> <th>{{.i18n.Tr "admin.users.edit"}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{range .Sources}} {{range .Sources}}
<tr> <tr>
<td>{{.ID}}</td> <td>{{.ID}}</td>
<td><a href="{{AppSubUrl}}/admin/auths/{{.ID}}">{{.Name}}</a></td> <td><a href="{{AppSubUrl}}/admin/auths/{{.ID}}">{{.Name}}</a></td>
<td>{{.TypeName}}</td> <td>{{.TypeName}}</td>
<td><i class="fa fa{{if .IsActived}}-check{{end}}-square-o"></i></td> <td><i class="fa fa{{if .IsActived}}-check{{end}}-square-o"></i></td>
<td><span class="poping up" data-content="{{DateFmtLong .Updated}}" data-variation="tiny">{{DateFmtShort .Updated}}</span></td> <td><span class="poping up" data-content="{{DateFmtLong .Updated}}" data-variation="tiny">{{DateFmtShort .Updated}}</span></td>
<td><span class="poping up" data-content="{{DateFmtLong .Created}}" data-variation="tiny">{{DateFmtShort .Created}}</span></td> <td><span class="poping up" data-content="{{DateFmtLong .Created}}" data-variation="tiny">{{DateFmtShort .Created}}</span></td>
<td><a href="{{AppSubUrl}}/admin/auths/{{.ID}}"><i class="fa fa-pencil-square-o"></i></a></td> <td><a href="{{AppSubUrl}}/admin/auths/{{.ID}}"><i class="fa fa-pencil-square-o"></i></a></td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,159 +1,159 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="admin new authentication"> <div class="admin new authentication">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "admin/navbar" .}} {{template "admin/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.auths.new"}} {{.i18n.Tr "admin.auths.new"}}
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<!-- Types and name --> <!-- Types and name -->
<div class="inline required field {{if .Err_Type}}error{{end}}"> <div class="inline required field {{if .Err_Type}}error{{end}}">
<label>{{.i18n.Tr "admin.auths.auth_type"}}</label> <label>{{.i18n.Tr "admin.auths.auth_type"}}</label>
<div class="ui selection type dropdown"> <div class="ui selection type dropdown">
<input type="hidden" id="auth_type" name="type" value="{{.type}}"> <input type="hidden" id="auth_type" name="type" value="{{.type}}">
<div class="text">{{.CurTypeName}}</div> <div class="text">{{.CurTypeName}}</div>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
{{range .AuthSources}} {{range .AuthSources}}
<div class="item" data-value="{{.Type}}">{{.Name}}</div> <div class="item" data-value="{{.Type}}">{{.Name}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
<div class="required inline field {{if .Err_Name}}error{{end}}"> <div class="required inline field {{if .Err_Name}}error{{end}}">
<label for="name">{{.i18n.Tr "admin.auths.auth_name"}}</label> <label for="name">{{.i18n.Tr "admin.auths.auth_name"}}</label>
<input id="name" name="name" value="{{.name}}" autofocus required> <input id="name" name="name" value="{{.name}}" autofocus required>
</div> </div>
<!-- LDAP and DLDAP --> <!-- LDAP and DLDAP -->
<div class="ldap dldap field {{if not (or (eq .type 2) (eq .type 5))}}hide{{end}}"> <div class="ldap dldap field {{if not (or (eq .type 2) (eq .type 5))}}hide{{end}}">
<div class="required field"> <div class="required field">
<label for="host">{{.i18n.Tr "admin.auths.host"}}</label> <label for="host">{{.i18n.Tr "admin.auths.host"}}</label>
<input id="host" name="host" value="{{.host}}" placeholder="e.g. mydomain.com"> <input id="host" name="host" value="{{.host}}" placeholder="e.g. mydomain.com">
</div> </div>
<div class="required field"> <div class="required field">
<label for="port">{{.i18n.Tr "admin.auths.port"}}</label> <label for="port">{{.i18n.Tr "admin.auths.port"}}</label>
<input id="port" name="port" value="{{.port}}" placeholder="e.g. 636"> <input id="port" name="port" value="{{.port}}" placeholder="e.g. 636">
</div> </div>
<div class="ldap required field {{if not (eq .type 2)}}hide{{end}}"> <div class="ldap required field {{if not (eq .type 2)}}hide{{end}}">
<label for="bind_dn">{{.i18n.Tr "admin.auths.bind_dn"}}</label> <label for="bind_dn">{{.i18n.Tr "admin.auths.bind_dn"}}</label>
<input id="bind_dn" name="bind_dn" value="{{.bind_dn}}" placeholder="e.g. cn=Search,dc=mydomain,dc=com"> <input id="bind_dn" name="bind_dn" value="{{.bind_dn}}" placeholder="e.g. cn=Search,dc=mydomain,dc=com">
</div> </div>
<input class="fake" type="password"> <input class="fake" type="password">
<div class="ldap required field {{if not (eq .type 2)}}hide{{end}}"> <div class="ldap required field {{if not (eq .type 2)}}hide{{end}}">
<label for="bind_password">{{.i18n.Tr "admin.auths.bind_password"}}</label> <label for="bind_password">{{.i18n.Tr "admin.auths.bind_password"}}</label>
<input id="bind_password" name="bind_password" type="password" value="{{.bind_password}}"> <input id="bind_password" name="bind_password" type="password" value="{{.bind_password}}">
<p class="help text red">{{.i18n.Tr "admin.auths.bind_password_helper"}}</p> <p class="help text red">{{.i18n.Tr "admin.auths.bind_password_helper"}}</p>
</div> </div>
<div class="ldap required field {{if not (eq .type 2)}}hide{{end}}"> <div class="ldap required field {{if not (eq .type 2)}}hide{{end}}">
<label for="user_base">{{.i18n.Tr "admin.auths.user_base"}}</label> <label for="user_base">{{.i18n.Tr "admin.auths.user_base"}}</label>
<input id="user_base" name="user_base" value="{{.user_base}}" placeholder="e.g. ou=Users,dc=mydomain,dc=com"> <input id="user_base" name="user_base" value="{{.user_base}}" placeholder="e.g. ou=Users,dc=mydomain,dc=com">
</div> </div>
<div class="dldap required field {{if not (eq .type 5)}}hide{{end}}"> <div class="dldap required field {{if not (eq .type 5)}}hide{{end}}">
<label for="user_dn">{{.i18n.Tr "admin.auths.user_dn"}}</label> <label for="user_dn">{{.i18n.Tr "admin.auths.user_dn"}}</label>
<input id="user_dn" name="user_dn" value="{{.user_dn}}" placeholder="e.g. uid=%s,ou=Users,dc=mydomain,dc=com"> <input id="user_dn" name="user_dn" value="{{.user_dn}}" placeholder="e.g. uid=%s,ou=Users,dc=mydomain,dc=com">
</div> </div>
<div class="required field"> <div class="required field">
<label for="filter">{{.i18n.Tr "admin.auths.filter"}}</label> <label for="filter">{{.i18n.Tr "admin.auths.filter"}}</label>
<input id="filter" name="filter" value="{{.filter}}" placeholder="e.g. (&(objectClass=posixAccount)(uid=%s))"> <input id="filter" name="filter" value="{{.filter}}" placeholder="e.g. (&(objectClass=posixAccount)(uid=%s))">
</div> </div>
<div class="field"> <div class="field">
<label for="admin_filter">{{.i18n.Tr "admin.auths.admin_filter"}}</label> <label for="admin_filter">{{.i18n.Tr "admin.auths.admin_filter"}}</label>
<input id="admin_filter" name="admin_filter" value="{{.admin_filter}}"> <input id="admin_filter" name="admin_filter" value="{{.admin_filter}}">
</div> </div>
<div class="field"> <div class="field">
<label for="attribute_username">{{.i18n.Tr "admin.auths.attribute_username"}}</label> <label for="attribute_username">{{.i18n.Tr "admin.auths.attribute_username"}}</label>
<input id="attribute_username" name="attribute_username" value="{{.attribute_username}}" placeholder="{{.i18n.Tr "admin.auths.attribute_username_placeholder"}}"> <input id="attribute_username" name="attribute_username" value="{{.attribute_username}}" placeholder="{{.i18n.Tr "admin.auths.attribute_username_placeholder"}}">
</div> </div>
<div class="field"> <div class="field">
<label for="attribute_name">{{.i18n.Tr "admin.auths.attribute_name"}}</label> <label for="attribute_name">{{.i18n.Tr "admin.auths.attribute_name"}}</label>
<input id="attribute_name" name="attribute_name" value="{{.attribute_name}}"> <input id="attribute_name" name="attribute_name" value="{{.attribute_name}}">
</div> </div>
<div class="field"> <div class="field">
<label for="attribute_surname">{{.i18n.Tr "admin.auths.attribute_surname"}}</label> <label for="attribute_surname">{{.i18n.Tr "admin.auths.attribute_surname"}}</label>
<input id="attribute_surname" name="attribute_surname" value="{{.attribute_surname}}"> <input id="attribute_surname" name="attribute_surname" value="{{.attribute_surname}}">
</div> </div>
<div class="required field"> <div class="required field">
<label for="attribute_mail">{{.i18n.Tr "admin.auths.attribute_mail"}}</label> <label for="attribute_mail">{{.i18n.Tr "admin.auths.attribute_mail"}}</label>
<input id="attribute_mail" name="attribute_mail" value="{{.attribute_mail}}" placeholder="e.g. mail"> <input id="attribute_mail" name="attribute_mail" value="{{.attribute_mail}}" placeholder="e.g. mail">
</div> </div>
</div> </div>
<!-- SMTP --> <!-- SMTP -->
<div class="smtp field {{if not (eq .type 3)}}hide{{end}}"> <div class="smtp field {{if not (eq .type 3)}}hide{{end}}">
<div class="inline required field"> <div class="inline required field">
<label>{{.i18n.Tr "admin.auths.smtp_auth"}}</label> <label>{{.i18n.Tr "admin.auths.smtp_auth"}}</label>
<div class="ui selection type dropdown"> <div class="ui selection type dropdown">
<input type="hidden" id="smtp_auth" name="smtp_auth" value="{{.smtp_auth}}"> <input type="hidden" id="smtp_auth" name="smtp_auth" value="{{.smtp_auth}}">
<div class="text">{{.smtp_auth}}</div> <div class="text">{{.smtp_auth}}</div>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
{{range .SMTPAuths}} {{range .SMTPAuths}}
<div class="item" data-value="{{.}}">{{.}}</div> <div class="item" data-value="{{.}}">{{.}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
<div class="required field"> <div class="required field">
<label for="smtp_host">{{.i18n.Tr "admin.auths.smtphost"}}</label> <label for="smtp_host">{{.i18n.Tr "admin.auths.smtphost"}}</label>
<input id="smtp_host" name="smtp_host" value="{{.smtp_host}}"> <input id="smtp_host" name="smtp_host" value="{{.smtp_host}}">
</div> </div>
<div class="required field"> <div class="required field">
<label for="smtp_port">{{.i18n.Tr "admin.auths.smtpport"}}</label> <label for="smtp_port">{{.i18n.Tr "admin.auths.smtpport"}}</label>
<input id="smtp_port" name="smtp_port" value="{{.smtp_port}}"> <input id="smtp_port" name="smtp_port" value="{{.smtp_port}}">
</div> </div>
<div class="field"> <div class="field">
<label for="allowed_domains">{{.i18n.Tr "admin.auths.allowed_domains"}}</label> <label for="allowed_domains">{{.i18n.Tr "admin.auths.allowed_domains"}}</label>
<input id="allowed_domains" name="allowed_domains" value="{{.allowed_domains}}"> <input id="allowed_domains" name="allowed_domains" value="{{.allowed_domains}}">
<p class="help">{{.i18n.Tr "admin.auths.allowed_domains_helper"}}</p> <p class="help">{{.i18n.Tr "admin.auths.allowed_domains_helper"}}</p>
</div> </div>
</div> </div>
<!-- PAM --> <!-- PAM -->
<div class="pam required field {{if not (eq .type 4)}}hide{{end}}"> <div class="pam required field {{if not (eq .type 4)}}hide{{end}}">
<label for="pam_service_name">{{.i18n.Tr "admin.auths.pam_service_name"}}</label> <label for="pam_service_name">{{.i18n.Tr "admin.auths.pam_service_name"}}</label>
<input id="pam_service_name" name="pam_service_name" value="{{.pam_service_name}}" /> <input id="pam_service_name" name="pam_service_name" value="{{.pam_service_name}}" />
</div> </div>
<div class="ldap dldap smtp inline field {{if not (or (or (eq .type 2) (eq .type 5)) (eq .type 3))}}hide{{end}}"> <div class="ldap dldap smtp inline field {{if not (or (or (eq .type 2) (eq .type 5)) (eq .type 3))}}hide{{end}}">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.auths.enable_tls"}}</strong></label> <label><strong>{{.i18n.Tr "admin.auths.enable_tls"}}</strong></label>
<input name="tls" type="checkbox" {{if .tls}}checked{{end}}> <input name="tls" type="checkbox" {{if .tls}}checked{{end}}>
</div> </div>
</div> </div>
<div class="ldap dldap smtp inline field {{if not (or (or (eq .type 2) (eq .type 5)) (eq .type 3))}}hide{{end}}"> <div class="ldap dldap smtp inline field {{if not (or (or (eq .type 2) (eq .type 5)) (eq .type 3))}}hide{{end}}">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.auths.skip_tls_verify"}}</strong></label> <label><strong>{{.i18n.Tr "admin.auths.skip_tls_verify"}}</strong></label>
<input name="skip_verify" type="checkbox" {{if .skip_verify}}checked{{end}}> <input name="skip_verify" type="checkbox" {{if .skip_verify}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.auths.activated"}}</strong></label> <label><strong>{{.i18n.Tr "admin.auths.activated"}}</strong></label>
<input name="is_active" type="checkbox" {{if .is_active}}checked{{end}}> <input name="is_active" type="checkbox" {{if .is_active}}checked{{end}}>
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<button class="ui green button">{{.i18n.Tr "admin.auths.new"}}</button> <button class="ui green button">{{.i18n.Tr "admin.auths.new"}}</button>
</div> </div>
</form> </form>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.auths.tips"}} {{.i18n.Tr "admin.auths.tips"}}
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
<h5>GMail Setting:</h5> <h5>GMail Setting:</h5>
<p>Host: smtp.gmail.com, Post: 587, Enable TLS Encryption: true</p> <p>Host: smtp.gmail.com, Post: 587, Enable TLS Encryption: true</p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,190 +1,190 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="admin monitor"> <div class="admin monitor">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "admin/navbar" .}} {{template "admin/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.config.server_config"}} {{.i18n.Tr "admin.config.server_config"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<dl class="dl-horizontal admin-dl-horizontal"> <dl class="dl-horizontal admin-dl-horizontal">
<dt>{{.i18n.Tr "admin.config.app_name"}}</dt> <dt>{{.i18n.Tr "admin.config.app_name"}}</dt>
<dd>{{AppName}}</dd> <dd>{{AppName}}</dd>
<dt>{{.i18n.Tr "admin.config.app_ver"}}</dt> <dt>{{.i18n.Tr "admin.config.app_ver"}}</dt>
<dd>{{AppVer}}</dd> <dd>{{AppVer}}</dd>
<dt>{{.i18n.Tr "admin.config.app_url"}}</dt> <dt>{{.i18n.Tr "admin.config.app_url"}}</dt>
<dd>{{.AppUrl}}</dd> <dd>{{.AppUrl}}</dd>
<dt>{{.i18n.Tr "admin.config.domain"}}</dt> <dt>{{.i18n.Tr "admin.config.domain"}}</dt>
<dd>{{.Domain}}</dd> <dd>{{.Domain}}</dd>
<dt>{{.i18n.Tr "admin.config.offline_mode"}}</dt> <dt>{{.i18n.Tr "admin.config.offline_mode"}}</dt>
<dd><i class="fa fa{{if .OfflineMode}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .OfflineMode}}-check{{end}}-square-o"></i></dd>
<dt>{{.i18n.Tr "admin.config.disable_router_log"}}</dt> <dt>{{.i18n.Tr "admin.config.disable_router_log"}}</dt>
<dd><i class="fa fa{{if .DisableRouterLog}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .DisableRouterLog}}-check{{end}}-square-o"></i></dd>
<div class="ui divider"></div> <div class="ui divider"></div>
<dt>{{.i18n.Tr "admin.config.run_user"}}</dt> <dt>{{.i18n.Tr "admin.config.run_user"}}</dt>
<dd>{{.RunUser}}</dd> <dd>{{.RunUser}}</dd>
<dt>{{.i18n.Tr "admin.config.run_mode"}}</dt> <dt>{{.i18n.Tr "admin.config.run_mode"}}</dt>
<dd>{{.RunMode}}</dd> <dd>{{.RunMode}}</dd>
<div class="ui divider"></div> <div class="ui divider"></div>
<dt>{{.i18n.Tr "admin.config.repo_root_path"}}</dt> <dt>{{.i18n.Tr "admin.config.repo_root_path"}}</dt>
<dd>{{.RepoRootPath}}</dd> <dd>{{.RepoRootPath}}</dd>
<dt>{{.i18n.Tr "admin.config.static_file_root_path"}}</dt> <dt>{{.i18n.Tr "admin.config.static_file_root_path"}}</dt>
<dd>{{.StaticRootPath}}</dd> <dd>{{.StaticRootPath}}</dd>
<dt>{{.i18n.Tr "admin.config.log_file_root_path"}}</dt> <dt>{{.i18n.Tr "admin.config.log_file_root_path"}}</dt>
<dd>{{.LogRootPath}}</dd> <dd>{{.LogRootPath}}</dd>
<dt>{{.i18n.Tr "admin.config.script_type"}}</dt> <dt>{{.i18n.Tr "admin.config.script_type"}}</dt>
<dd>{{.ScriptType}}</dd> <dd>{{.ScriptType}}</dd>
<dt>{{.i18n.Tr "admin.config.reverse_auth_user"}}</dt> <dt>{{.i18n.Tr "admin.config.reverse_auth_user"}}</dt>
<dd>{{.ReverseProxyAuthUser}}</dd> <dd>{{.ReverseProxyAuthUser}}</dd>
</dl> </dl>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.config.db_config"}} {{.i18n.Tr "admin.config.db_config"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<dl class="dl-horizontal admin-dl-horizontal"> <dl class="dl-horizontal admin-dl-horizontal">
<dt>{{.i18n.Tr "admin.config.db_type"}}</dt> <dt>{{.i18n.Tr "admin.config.db_type"}}</dt>
<dd>{{.DbCfg.Type}}</dd> <dd>{{.DbCfg.Type}}</dd>
<dt>{{.i18n.Tr "admin.config.db_host"}}</dt> <dt>{{.i18n.Tr "admin.config.db_host"}}</dt>
<dd>{{.DbCfg.Host}}</dd> <dd>{{.DbCfg.Host}}</dd>
<dt>{{.i18n.Tr "admin.config.db_name"}}</dt> <dt>{{.i18n.Tr "admin.config.db_name"}}</dt>
<dd>{{.DbCfg.Name}}</dd> <dd>{{.DbCfg.Name}}</dd>
<dt>{{.i18n.Tr "admin.config.db_user"}}</dt> <dt>{{.i18n.Tr "admin.config.db_user"}}</dt>
<dd>{{.DbCfg.User}}</dd> <dd>{{.DbCfg.User}}</dd>
<dt>{{.i18n.Tr "admin.config.db_ssl_mode"}}</dt> <dt>{{.i18n.Tr "admin.config.db_ssl_mode"}}</dt>
<dd>{{.DbCfg.SSLMode}} {{.i18n.Tr "admin.config.db_ssl_mode_helper"}}</dd> <dd>{{.DbCfg.SSLMode}} {{.i18n.Tr "admin.config.db_ssl_mode_helper"}}</dd>
<dt>{{.i18n.Tr "admin.config.db_path"}}</dt> <dt>{{.i18n.Tr "admin.config.db_path"}}</dt>
<dd>{{.DbCfg.Path}} {{.i18n.Tr "admin.config.db_path_helper"}}</dd> <dd>{{.DbCfg.Path}} {{.i18n.Tr "admin.config.db_path_helper"}}</dd>
</dl> </dl>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.config.service_config"}} {{.i18n.Tr "admin.config.service_config"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<dl class="dl-horizontal admin-dl-horizontal"> <dl class="dl-horizontal admin-dl-horizontal">
<dt>{{.i18n.Tr "admin.config.register_email_confirm"}}</dt> <dt>{{.i18n.Tr "admin.config.register_email_confirm"}}</dt>
<dd><i class="fa fa{{if .Service.RegisterEmailConfirm}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .Service.RegisterEmailConfirm}}-check{{end}}-square-o"></i></dd>
<dt>{{.i18n.Tr "admin.config.disable_register"}}</dt> <dt>{{.i18n.Tr "admin.config.disable_register"}}</dt>
<dd><i class="fa fa{{if .Service.DisableRegistration}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .Service.DisableRegistration}}-check{{end}}-square-o"></i></dd>
<dt>{{.i18n.Tr "admin.config.show_registration_button"}}</dt> <dt>{{.i18n.Tr "admin.config.show_registration_button"}}</dt>
<dd><i class="fa fa{{if .Service.ShowRegistrationButton}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .Service.ShowRegistrationButton}}-check{{end}}-square-o"></i></dd>
<dt>{{.i18n.Tr "admin.config.require_sign_in_view"}}</dt> <dt>{{.i18n.Tr "admin.config.require_sign_in_view"}}</dt>
<dd><i class="fa fa{{if .Service.RequireSignInView}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .Service.RequireSignInView}}-check{{end}}-square-o"></i></dd>
<dt>{{.i18n.Tr "admin.config.enable_cache_avatar"}}</dt> <dt>{{.i18n.Tr "admin.config.enable_cache_avatar"}}</dt>
<dd><i class="fa fa{{if .Service.EnableCacheAvatar}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .Service.EnableCacheAvatar}}-check{{end}}-square-o"></i></dd>
<dt>{{.i18n.Tr "admin.config.mail_notify"}}</dt> <dt>{{.i18n.Tr "admin.config.mail_notify"}}</dt>
<dd><i class="fa fa{{if .Service.EnableNotifyMail}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .Service.EnableNotifyMail}}-check{{end}}-square-o"></i></dd>
<dt>{{.i18n.Tr "admin.config.disable_key_size_check"}}</dt> <dt>{{.i18n.Tr "admin.config.disable_key_size_check"}}</dt>
<dd><i class="fa fa{{if .Service.DisableMinimumKeySizeCheck}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .Service.DisableMinimumKeySizeCheck}}-check{{end}}-square-o"></i></dd>
<dt>{{.i18n.Tr "admin.config.enable_captcha"}}</dt> <dt>{{.i18n.Tr "admin.config.enable_captcha"}}</dt>
<dd><i class="fa fa{{if .Service.EnableCaptcha}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .Service.EnableCaptcha}}-check{{end}}-square-o"></i></dd>
<div class="ui divider"></div> <div class="ui divider"></div>
<dt>{{.i18n.Tr "admin.config.active_code_lives"}}</dt> <dt>{{.i18n.Tr "admin.config.active_code_lives"}}</dt>
<dd>{{.Service.ActiveCodeLives}} {{.i18n.Tr "tool.raw_minutes"}}</dd> <dd>{{.Service.ActiveCodeLives}} {{.i18n.Tr "tool.raw_minutes"}}</dd>
<dt>{{.i18n.Tr "admin.config.reset_password_code_lives"}}</dt> <dt>{{.i18n.Tr "admin.config.reset_password_code_lives"}}</dt>
<dd>{{.Service.ResetPwdCodeLives}} {{.i18n.Tr "tool.raw_minutes"}}</dd> <dd>{{.Service.ResetPwdCodeLives}} {{.i18n.Tr "tool.raw_minutes"}}</dd>
</dl> </dl>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.config.webhook_config"}} {{.i18n.Tr "admin.config.webhook_config"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<dl class="dl-horizontal admin-dl-horizontal"> <dl class="dl-horizontal admin-dl-horizontal">
<dt>{{.i18n.Tr "admin.config.queue_length"}}</dt> <dt>{{.i18n.Tr "admin.config.queue_length"}}</dt>
<dd>{{.Webhook.QueueLength}}</dd> <dd>{{.Webhook.QueueLength}}</dd>
<dt>{{.i18n.Tr "admin.config.deliver_timeout"}}</dt> <dt>{{.i18n.Tr "admin.config.deliver_timeout"}}</dt>
<dd>{{.Webhook.DeliverTimeout}} {{.i18n.Tr "tool.raw_seconds"}}</dd> <dd>{{.Webhook.DeliverTimeout}} {{.i18n.Tr "tool.raw_seconds"}}</dd>
<dt>{{.i18n.Tr "admin.config.skip_tls_verify"}}</dt> <dt>{{.i18n.Tr "admin.config.skip_tls_verify"}}</dt>
<dd><i class="fa fa{{if .Webhook.SkipTLSVerify}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .Webhook.SkipTLSVerify}}-check{{end}}-square-o"></i></dd>
</dl> </dl>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.config.mailer_config"}} {{.i18n.Tr "admin.config.mailer_config"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<dl class="dl-horizontal admin-dl-horizontal"> <dl class="dl-horizontal admin-dl-horizontal">
<dt>{{.i18n.Tr "admin.config.mailer_enabled"}}</dt> <dt>{{.i18n.Tr "admin.config.mailer_enabled"}}</dt>
<dd><i class="fa fa{{if .MailerEnabled}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .MailerEnabled}}-check{{end}}-square-o"></i></dd>
{{if .MailerEnabled}}<dt>{{.i18n.Tr "admin.config.mailer_name"}}</dt> {{if .MailerEnabled}}<dt>{{.i18n.Tr "admin.config.mailer_name"}}</dt>
<dd>{{.Mailer.Name}}</dd> <dd>{{.Mailer.Name}}</dd>
<dt>{{.i18n.Tr "admin.config.mailer_disable_helo"}}</dt> <dt>{{.i18n.Tr "admin.config.mailer_disable_helo"}}</dt>
<dd><i class="fa fa{{if .Mailer.DisableHelo}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .Mailer.DisableHelo}}-check{{end}}-square-o"></i></dd>
<dt>{{.i18n.Tr "admin.config.mailer_host"}}</dt> <dt>{{.i18n.Tr "admin.config.mailer_host"}}</dt>
<dd>{{.Mailer.Host}}</dd> <dd>{{.Mailer.Host}}</dd>
<dt>{{.i18n.Tr "admin.config.mailer_user"}}</dt> <dt>{{.i18n.Tr "admin.config.mailer_user"}}</dt>
<dd>{{.Mailer.User}}</dd>{{end}} <dd>{{.Mailer.User}}</dd>{{end}}
</dl> </dl>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.config.cache_config"}} {{.i18n.Tr "admin.config.cache_config"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<dl class="dl-horizontal admin-dl-horizontal"> <dl class="dl-horizontal admin-dl-horizontal">
<dt>{{.i18n.Tr "admin.config.cache_adapter"}}</dt> <dt>{{.i18n.Tr "admin.config.cache_adapter"}}</dt>
<dd>{{.CacheAdapter}}</dd> <dd>{{.CacheAdapter}}</dd>
<dt>{{.i18n.Tr "admin.config.cache_interval"}}</dt> <dt>{{.i18n.Tr "admin.config.cache_interval"}}</dt>
<dd>{{.CacheInternal}} {{.i18n.Tr "tool.raw_seconds"}}</dd> <dd>{{.CacheInternal}} {{.i18n.Tr "tool.raw_seconds"}}</dd>
<dt>{{.i18n.Tr "admin.config.cache_conn"}}</dt> <dt>{{.i18n.Tr "admin.config.cache_conn"}}</dt>
<dd><pre>{{.CacheConn}}</pre></dd> <dd><pre>{{.CacheConn}}</pre></dd>
</dl> </dl>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.config.session_config"}} {{.i18n.Tr "admin.config.session_config"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<dl class="dl-horizontal admin-dl-horizontal"> <dl class="dl-horizontal admin-dl-horizontal">
<dt>{{.i18n.Tr "admin.config.session_provider"}}</dt> <dt>{{.i18n.Tr "admin.config.session_provider"}}</dt>
<dd>{{.SessionConfig.Provider}}</dd> <dd>{{.SessionConfig.Provider}}</dd>
<dt>{{.i18n.Tr "admin.config.provider_config"}}</dt> <dt>{{.i18n.Tr "admin.config.provider_config"}}</dt>
<dd><pre>{{.SessionConfig.ProviderConfig}}</pre></dd> <dd><pre>{{.SessionConfig.ProviderConfig}}</pre></dd>
<dt>{{.i18n.Tr "admin.config.cookie_name"}}</dt> <dt>{{.i18n.Tr "admin.config.cookie_name"}}</dt>
<dd>{{.SessionConfig.CookieName}}</dd> <dd>{{.SessionConfig.CookieName}}</dd>
<dt>{{.i18n.Tr "admin.config.gc_interval_time"}}</dt> <dt>{{.i18n.Tr "admin.config.gc_interval_time"}}</dt>
<dd>{{.SessionConfig.Gclifetime}} {{.i18n.Tr "tool.raw_seconds"}}</dd> <dd>{{.SessionConfig.Gclifetime}} {{.i18n.Tr "tool.raw_seconds"}}</dd>
<dt>{{.i18n.Tr "admin.config.session_life_time"}}</dt> <dt>{{.i18n.Tr "admin.config.session_life_time"}}</dt>
<dd>{{.SessionConfig.Maxlifetime}} {{.i18n.Tr "tool.raw_seconds"}}</dd> <dd>{{.SessionConfig.Maxlifetime}} {{.i18n.Tr "tool.raw_seconds"}}</dd>
<dt>{{.i18n.Tr "admin.config.https_only"}}</dt> <dt>{{.i18n.Tr "admin.config.https_only"}}</dt>
<dd><i class="fa fa{{if .SessionConfig.Secure}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .SessionConfig.Secure}}-check{{end}}-square-o"></i></dd>
<dt>{{.i18n.Tr "admin.config.cookie_life_time"}}</dt> <dt>{{.i18n.Tr "admin.config.cookie_life_time"}}</dt>
<dd>{{.SessionConfig.CookieLifeTime}} {{.i18n.Tr "tool.raw_seconds"}}</dd> <dd>{{.SessionConfig.CookieLifeTime}} {{.i18n.Tr "tool.raw_seconds"}}</dd>
</dl> </dl>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.config.picture_config"}} {{.i18n.Tr "admin.config.picture_config"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<dl class="dl-horizontal admin-dl-horizontal"> <dl class="dl-horizontal admin-dl-horizontal">
<dt>{{.i18n.Tr "admin.config.picture_service"}}</dt> <dt>{{.i18n.Tr "admin.config.picture_service"}}</dt>
<dd>{{.PictureService}}</dd> <dd>{{.PictureService}}</dd>
<dt>{{.i18n.Tr "admin.config.disable_gravatar"}}</dt> <dt>{{.i18n.Tr "admin.config.disable_gravatar"}}</dt>
<dd><i class="fa fa{{if .DisableGravatar}}-check{{end}}-square-o"></i></dd> <dd><i class="fa fa{{if .DisableGravatar}}-check{{end}}-square-o"></i></dd>
</dl> </dl>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.config.log_config"}} {{.i18n.Tr "admin.config.log_config"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<dl class="dl-horizontal admin-dl-horizontal"> <dl class="dl-horizontal admin-dl-horizontal">
{{range .Loggers}} {{range .Loggers}}
<dt>{{$.i18n.Tr "admin.config.log_mode"}}</dt> <dt>{{$.i18n.Tr "admin.config.log_mode"}}</dt>
<dd>{{.Mode}}</dd> <dd>{{.Mode}}</dd>
<dt>{{$.i18n.Tr "admin.config.log_config"}}</dt> <dt>{{$.i18n.Tr "admin.config.log_config"}}</dt>
<dd><pre>{{.Config}}</pre></dd> <dd><pre>{{.Config}}</pre></dd>
{{end}} {{end}}
</dl> </dl>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,121 +1,121 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="admin dashboard"> <div class="admin dashboard">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "admin/navbar" .}} {{template "admin/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.dashboard.statistic"}} {{.i18n.Tr "admin.dashboard.statistic"}}
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
<p> <p>
{{.i18n.Tr "admin.dashboard.statistic_info" .Stats.Counter.User .Stats.Counter.Org .Stats.Counter.PublicKey .Stats.Counter.Repo .Stats.Counter.Watch .Stats.Counter.Star .Stats.Counter.Action .Stats.Counter.Access .Stats.Counter.Issue .Stats.Counter.Comment .Stats.Counter.Oauth .Stats.Counter.Follow .Stats.Counter.Mirror .Stats.Counter.Release .Stats.Counter.LoginSource .Stats.Counter.Webhook .Stats.Counter.Milestone .Stats.Counter.Label .Stats.Counter.HookTask .Stats.Counter.Team .Stats.Counter.UpdateTask .Stats.Counter.Attachment | Str2html}} {{.i18n.Tr "admin.dashboard.statistic_info" .Stats.Counter.User .Stats.Counter.Org .Stats.Counter.PublicKey .Stats.Counter.Repo .Stats.Counter.Watch .Stats.Counter.Star .Stats.Counter.Action .Stats.Counter.Access .Stats.Counter.Issue .Stats.Counter.Comment .Stats.Counter.Oauth .Stats.Counter.Follow .Stats.Counter.Mirror .Stats.Counter.Release .Stats.Counter.LoginSource .Stats.Counter.Webhook .Stats.Counter.Milestone .Stats.Counter.Label .Stats.Counter.HookTask .Stats.Counter.Team .Stats.Counter.UpdateTask .Stats.Counter.Attachment | Str2html}}
</p> </p>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.dashboard.operations"}} {{.i18n.Tr "admin.dashboard.operations"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<table class="ui very basic table"> <table class="ui very basic table">
<tbody> <tbody>
<tr> <tr>
<td>{{.i18n.Tr "admin.dashboard.delete_inactivate_accounts"}}</td> <td>{{.i18n.Tr "admin.dashboard.delete_inactivate_accounts"}}</td>
<td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=1">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td> <td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=1">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td>
</tr> </tr>
<tr> <tr>
<td>{{.i18n.Tr "admin.dashboard.delete_repo_archives"}}</td> <td>{{.i18n.Tr "admin.dashboard.delete_repo_archives"}}</td>
<td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=2">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td> <td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=2">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td>
</tr> </tr>
<tr> <tr>
<td>{{.i18n.Tr "admin.dashboard.delete_missing_repos"}}</td> <td>{{.i18n.Tr "admin.dashboard.delete_missing_repos"}}</td>
<td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=3">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td> <td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=3">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td>
</tr> </tr>
<tr> <tr>
<td>{{.i18n.Tr "admin.dashboard.git_gc_repos"}}</td> <td>{{.i18n.Tr "admin.dashboard.git_gc_repos"}}</td>
<td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=4">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td> <td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=4">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td>
</tr> </tr>
<tr> <tr>
<td>{{.i18n.Tr "admin.dashboard.resync_all_sshkeys"}}</td> <td>{{.i18n.Tr "admin.dashboard.resync_all_sshkeys"}}</td>
<td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=5">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td> <td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=5">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td>
</tr> </tr>
<tr> <tr>
<td>{{.i18n.Tr "admin.dashboard.resync_all_update_hooks"}}</td> <td>{{.i18n.Tr "admin.dashboard.resync_all_update_hooks"}}</td>
<td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=6">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td> <td><i class="fa fa-caret-square-o-right"></i> <a href="{{AppSubUrl}}/admin?op=6">{{.i18n.Tr "admin.dashboard.operation_run"}}</a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.dashboard.system_status"}} {{.i18n.Tr "admin.dashboard.system_status"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<dl class="dl-horizontal admin-dl-horizontal"> <dl class="dl-horizontal admin-dl-horizontal">
<dt>{{.i18n.Tr "admin.dashboard.server_uptime"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.server_uptime"}}</dt>
<dd>{{.SysStatus.Uptime}}</dd> <dd>{{.SysStatus.Uptime}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.current_goroutine"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.current_goroutine"}}</dt>
<dd>{{.SysStatus.NumGoroutine}}</dd> <dd>{{.SysStatus.NumGoroutine}}</dd>
<div class="ui divider"></div> <div class="ui divider"></div>
<dt>{{.i18n.Tr "admin.dashboard.current_memory_usage"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.current_memory_usage"}}</dt>
<dd>{{.SysStatus.MemAllocated}}</dd> <dd>{{.SysStatus.MemAllocated}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.total_memory_allocated"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.total_memory_allocated"}}</dt>
<dd>{{.SysStatus.MemTotal}}</dd> <dd>{{.SysStatus.MemTotal}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.memory_obtained"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.memory_obtained"}}</dt>
<dd>{{.SysStatus.MemSys}}</dd> <dd>{{.SysStatus.MemSys}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.pointer_lookup_times"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.pointer_lookup_times"}}</dt>
<dd>{{.SysStatus.Lookups}}</dd> <dd>{{.SysStatus.Lookups}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.memory_allocate_times"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.memory_allocate_times"}}</dt>
<dd>{{.SysStatus.MemMallocs}}</dd> <dd>{{.SysStatus.MemMallocs}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.memory_free_times"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.memory_free_times"}}</dt>
<dd>{{.SysStatus.MemFrees}}</dd> <dd>{{.SysStatus.MemFrees}}</dd>
<div class="ui divider"></div> <div class="ui divider"></div>
<dt>{{.i18n.Tr "admin.dashboard.current_heap_usage"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.current_heap_usage"}}</dt>
<dd>{{.SysStatus.HeapAlloc}}</dd> <dd>{{.SysStatus.HeapAlloc}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.heap_memory_obtained"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.heap_memory_obtained"}}</dt>
<dd>{{.SysStatus.HeapSys}}</dd> <dd>{{.SysStatus.HeapSys}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.heap_memory_idle"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.heap_memory_idle"}}</dt>
<dd>{{.SysStatus.HeapIdle}}</dd> <dd>{{.SysStatus.HeapIdle}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.heap_memory_in_use"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.heap_memory_in_use"}}</dt>
<dd>{{.SysStatus.HeapInuse}}</dd> <dd>{{.SysStatus.HeapInuse}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.heap_memory_released"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.heap_memory_released"}}</dt>
<dd>{{.SysStatus.HeapReleased}}</dd> <dd>{{.SysStatus.HeapReleased}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.heap_objects"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.heap_objects"}}</dt>
<dd>{{.SysStatus.HeapObjects}}</dd> <dd>{{.SysStatus.HeapObjects}}</dd>
<div class="ui divider"></div> <div class="ui divider"></div>
<dt>{{.i18n.Tr "admin.dashboard.bootstrap_stack_usage"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.bootstrap_stack_usage"}}</dt>
<dd>{{.SysStatus.StackInuse}}</dd> <dd>{{.SysStatus.StackInuse}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.stack_memory_obtained"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.stack_memory_obtained"}}</dt>
<dd>{{.SysStatus.StackSys}}</dd> <dd>{{.SysStatus.StackSys}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.mspan_structures_usage"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.mspan_structures_usage"}}</dt>
<dd>{{.SysStatus.MSpanInuse}}</dd> <dd>{{.SysStatus.MSpanInuse}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.mspan_structures_obtained"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.mspan_structures_obtained"}}</dt>
<dd>{{.SysStatus.HeapSys}}</dd> <dd>{{.SysStatus.HeapSys}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.mcache_structures_usage"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.mcache_structures_usage"}}</dt>
<dd>{{.SysStatus.MCacheInuse}}</dd> <dd>{{.SysStatus.MCacheInuse}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.mcache_structures_obtained"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.mcache_structures_obtained"}}</dt>
<dd>{{.SysStatus.MCacheSys}}</dd> <dd>{{.SysStatus.MCacheSys}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.profiling_bucket_hash_table_obtained"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.profiling_bucket_hash_table_obtained"}}</dt>
<dd>{{.SysStatus.BuckHashSys}}</dd> <dd>{{.SysStatus.BuckHashSys}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.gc_metadata_obtained"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.gc_metadata_obtained"}}</dt>
<dd>{{.SysStatus.GCSys}}</dd> <dd>{{.SysStatus.GCSys}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.other_system_allocation_obtained"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.other_system_allocation_obtained"}}</dt>
<dd>{{.SysStatus.OtherSys}}</dd> <dd>{{.SysStatus.OtherSys}}</dd>
<div class="ui divider"></div> <div class="ui divider"></div>
<dt>{{.i18n.Tr "admin.dashboard.next_gc_recycle"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.next_gc_recycle"}}</dt>
<dd>{{.SysStatus.NextGC}}</dd> <dd>{{.SysStatus.NextGC}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.last_gc_time"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.last_gc_time"}}</dt>
<dd>{{.SysStatus.LastGC}}</dd> <dd>{{.SysStatus.LastGC}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.total_gc_pause"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.total_gc_pause"}}</dt>
<dd>{{.SysStatus.PauseTotalNs}}</dd> <dd>{{.SysStatus.PauseTotalNs}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.last_gc_pause"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.last_gc_pause"}}</dt>
<dd>{{.SysStatus.PauseNs}}</dd> <dd>{{.SysStatus.PauseNs}}</dd>
<dt>{{.i18n.Tr "admin.dashboard.gc_times"}}</dt> <dt>{{.i18n.Tr "admin.dashboard.gc_times"}}</dt>
<dd>{{.SysStatus.NumGC}}</dd> <dd>{{.SysStatus.NumGC}}</dd>
</dl> </dl>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,65 +1,65 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="admin monitor"> <div class="admin monitor">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "admin/navbar" .}} {{template "admin/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.monitor.cron"}} {{.i18n.Tr "admin.monitor.cron"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<table class="ui very basic striped table"> <table class="ui very basic striped table">
<thead> <thead>
<tr> <tr>
<th>{{.i18n.Tr "admin.monitor.name"}}</th> <th>{{.i18n.Tr "admin.monitor.name"}}</th>
<th>{{.i18n.Tr "admin.monitor.schedule"}}</th> <th>{{.i18n.Tr "admin.monitor.schedule"}}</th>
<th>{{.i18n.Tr "admin.monitor.next"}}</th> <th>{{.i18n.Tr "admin.monitor.next"}}</th>
<th>{{.i18n.Tr "admin.monitor.previous"}}</th> <th>{{.i18n.Tr "admin.monitor.previous"}}</th>
<th>{{.i18n.Tr "admin.monitor.execute_times"}}</th> <th>{{.i18n.Tr "admin.monitor.execute_times"}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{range .Entries}} {{range .Entries}}
<tr> <tr>
<td>{{.Description}}</td> <td>{{.Description}}</td>
<td>{{.Spec}}</td> <td>{{.Spec}}</td>
<td>{{DateFmtLong .Next}}</td> <td>{{DateFmtLong .Next}}</td>
<td>{{if gt .Prev.Year 1 }}{{DateFmtLong .Prev}}{{else}}N/A{{end}}</td> <td>{{if gt .Prev.Year 1 }}{{DateFmtLong .Prev}}{{else}}N/A{{end}}</td>
<td>{{.ExecTimes}}</td> <td>{{.ExecTimes}}</td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>
</table> </table>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.monitor.process"}} {{.i18n.Tr "admin.monitor.process"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<table class="ui very basic striped table"> <table class="ui very basic striped table">
<thead> <thead>
<tr> <tr>
<th>Pid</th> <th>Pid</th>
<th>{{.i18n.Tr "admin.monitor.desc"}}</th> <th>{{.i18n.Tr "admin.monitor.desc"}}</th>
<th>{{.i18n.Tr "admin.monitor.start"}}</th> <th>{{.i18n.Tr "admin.monitor.start"}}</th>
<th>{{.i18n.Tr "admin.monitor.execute_time"}}</th> <th>{{.i18n.Tr "admin.monitor.execute_time"}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{range .Processes}} {{range .Processes}}
<tr> <tr>
<td>{{.Pid}}</td> <td>{{.Pid}}</td>
<td>{{.Description}}</td> <td>{{.Description}}</td>
<td>{{DateFmtLong .Start}}</td> <td>{{DateFmtLong .Start}}</td>
<td>{{TimeSince .Start $.Lang}}</td> <td>{{TimeSince .Start $.Lang}}</td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,15 +1,15 @@
<div id="setting-menu" class="grid-1-5 panel panel-radius left"> <div id="setting-menu" class="grid-1-5 panel panel-radius left">
<p class="panel-header"><strong>{{.i18n.Tr "admin_panel"}}</strong></p> <p class="panel-header"><strong>{{.i18n.Tr "admin_panel"}}</strong></p>
<div class="panel-body"> <div class="panel-body">
<ul class="menu menu-vertical switching-list grid-1-5 left"> <ul class="menu menu-vertical switching-list grid-1-5 left">
<li {{if .PageIsAdminDashboard}}class="current"{{end}}><a href="{{AppSubUrl}}/admin">{{.i18n.Tr "admin.dashboard"}}</a></li> <li {{if .PageIsAdminDashboard}}class="current"{{end}}><a href="{{AppSubUrl}}/admin">{{.i18n.Tr "admin.dashboard"}}</a></li>
<li {{if .PageIsAdminUsers}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/users">{{.i18n.Tr "admin.users"}}</a></li> <li {{if .PageIsAdminUsers}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/users">{{.i18n.Tr "admin.users"}}</a></li>
<li {{if .PageIsAdminOrganizations}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/orgs">{{.i18n.Tr "admin.organizations"}}</a></li> <li {{if .PageIsAdminOrganizations}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/orgs">{{.i18n.Tr "admin.organizations"}}</a></li>
<li {{if .PageIsAdminRepositories}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/repos">{{.i18n.Tr "admin.repositories"}}</a></li> <li {{if .PageIsAdminRepositories}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/repos">{{.i18n.Tr "admin.repositories"}}</a></li>
<li {{if .PageIsAdminAuthentications}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/auths">{{.i18n.Tr "admin.authentication"}}</a></li> <li {{if .PageIsAdminAuthentications}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/auths">{{.i18n.Tr "admin.authentication"}}</a></li>
<li {{if .PageIsAdminConfig}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/config">{{.i18n.Tr "admin.config"}}</a></li> <li {{if .PageIsAdminConfig}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/config">{{.i18n.Tr "admin.config"}}</a></li>
<li {{if .PageIsAdminNotices}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/notices">{{.i18n.Tr "admin.notices"}}</a></li> <li {{if .PageIsAdminNotices}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/notices">{{.i18n.Tr "admin.notices"}}</a></li>
<li {{if .PageIsAdminMonitor}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/monitor">{{.i18n.Tr "admin.monitor"}}</a></li> <li {{if .PageIsAdminMonitor}}class="current"{{end}}><a href="{{AppSubUrl}}/admin/monitor">{{.i18n.Tr "admin.monitor"}}</a></li>
</ul> </ul>
</div> </div>
</div> </div>

View File

@ -1,29 +1,29 @@
<div class="four wide column"> <div class="four wide column">
<div class="ui vertical menu"> <div class="ui vertical menu">
<div class="header item">{{.i18n.Tr "admin_panel"}}</div> <div class="header item">{{.i18n.Tr "admin_panel"}}</div>
<a class="{{if .PageIsAdminDashboard}}active{{end}} item" href="{{AppSubUrl}}/admin"> <a class="{{if .PageIsAdminDashboard}}active{{end}} item" href="{{AppSubUrl}}/admin">
{{.i18n.Tr "admin.dashboard"}} {{.i18n.Tr "admin.dashboard"}}
</a> </a>
<a class="{{if .PageIsAdminUsers}}active{{end}} item" href="{{AppSubUrl}}/admin/users"> <a class="{{if .PageIsAdminUsers}}active{{end}} item" href="{{AppSubUrl}}/admin/users">
{{.i18n.Tr "admin.users"}} {{.i18n.Tr "admin.users"}}
</a> </a>
<a class="{{if .PageIsAdminOrganizations}}active{{end}} item" href="{{AppSubUrl}}/admin/orgs"> <a class="{{if .PageIsAdminOrganizations}}active{{end}} item" href="{{AppSubUrl}}/admin/orgs">
{{.i18n.Tr "admin.organizations"}} {{.i18n.Tr "admin.organizations"}}
</a> </a>
<a class="{{if .PageIsAdminRepositories}}active{{end}} item" href="{{AppSubUrl}}/admin/repos"> <a class="{{if .PageIsAdminRepositories}}active{{end}} item" href="{{AppSubUrl}}/admin/repos">
{{.i18n.Tr "admin.repositories"}} {{.i18n.Tr "admin.repositories"}}
</a> </a>
<a class="{{if .PageIsAdminAuthentications}}active{{end}} item" href="{{AppSubUrl}}/admin/auths"> <a class="{{if .PageIsAdminAuthentications}}active{{end}} item" href="{{AppSubUrl}}/admin/auths">
{{.i18n.Tr "admin.authentication"}} {{.i18n.Tr "admin.authentication"}}
</a> </a>
<a class="{{if .PageIsAdminConfig}}active{{end}} item" href="{{AppSubUrl}}/admin/config"> <a class="{{if .PageIsAdminConfig}}active{{end}} item" href="{{AppSubUrl}}/admin/config">
{{.i18n.Tr "admin.config"}} {{.i18n.Tr "admin.config"}}
</a> </a>
<a class="{{if .PageIsAdminNotices}}active{{end}} item" href="{{AppSubUrl}}/admin/notices"> <a class="{{if .PageIsAdminNotices}}active{{end}} item" href="{{AppSubUrl}}/admin/notices">
{{.i18n.Tr "admin.notices"}} {{.i18n.Tr "admin.notices"}}
</a> </a>
<a class="{{if .PageIsAdminMonitor}}active{{end}} item" href="{{AppSubUrl}}/admin/monitor"> <a class="{{if .PageIsAdminMonitor}}active{{end}} item" href="{{AppSubUrl}}/admin/monitor">
{{.i18n.Tr "admin.monitor"}} {{.i18n.Tr "admin.monitor"}}
</a> </a>
</div> </div>
</div> </div>

View File

@ -1,104 +1,104 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="admin notice"> <div class="admin notice">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "admin/navbar" .}} {{template "admin/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.notices.system_notice_list"}} ({{.i18n.Tr "admin.total" .Total}}) {{.i18n.Tr "admin.notices.system_notice_list"}} ({{.i18n.Tr "admin.total" .Total}})
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<table class="ui very basic select selectable table"> <table class="ui very basic select selectable table">
<thead> <thead>
<tr> <tr>
<th></th> <th></th>
<th>ID</th> <th>ID</th>
<th>{{.i18n.Tr "admin.notices.type"}}</th> <th>{{.i18n.Tr "admin.notices.type"}}</th>
<th>{{.i18n.Tr "admin.notices.desc"}}</th> <th>{{.i18n.Tr "admin.notices.desc"}}</th>
<th width="100px">{{.i18n.Tr "admin.users.created"}}</th> <th width="100px">{{.i18n.Tr "admin.users.created"}}</th>
<th>{{.i18n.Tr "admin.notices.op"}}</th> <th>{{.i18n.Tr "admin.notices.op"}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{range .Notices}} {{range .Notices}}
<tr> <tr>
<td class="collapsing"> <td class="collapsing">
<div class="ui fitted checkbox" data-id="{{.ID}}"> <div class="ui fitted checkbox" data-id="{{.ID}}">
<input type="checkbox"> <label></label> <input type="checkbox"> <label></label>
</div> </div>
</td> </td>
<td>{{.ID}}</td> <td>{{.ID}}</td>
<td>{{$.i18n.Tr .TrStr}}</td> <td>{{$.i18n.Tr .TrStr}}</td>
<td>{{SubStr .Description 0 120}}...</td> <td>{{SubStr .Description 0 120}}...</td>
<td><span class="poping up" data-content="{{.Created}}" data-variation="inverted tiny">{{DateFmtShort .Created}}</span></td> <td><span class="poping up" data-content="{{.Created}}" data-variation="inverted tiny">{{DateFmtShort .Created}}</span></td>
<td><a href="#"><i class="browser icon view-detail" data-content="{{.Description}}"></i></a></td> <td><a href="#"><i class="browser icon view-detail" data-content="{{.Description}}"></i></a></td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>
<tfoot class="full-width"> <tfoot class="full-width">
<tr> <tr>
<th></th> <th></th>
<th colspan="5"> <th colspan="5">
<div class="ui right"> <div class="ui right">
<a class="ui red small button" href="{{AppSubUrl}}/admin/notices/empty">{{.i18n.Tr "admin.notices.delete_all"}}</a> <a class="ui red small button" href="{{AppSubUrl}}/admin/notices/empty">{{.i18n.Tr "admin.notices.delete_all"}}</a>
</div> </div>
<div class="ui floating upward dropdown small button"> <div class="ui floating upward dropdown small button">
<span class="text">{{.i18n.Tr "admin.notices.actions"}}</span> <span class="text">{{.i18n.Tr "admin.notices.actions"}}</span>
<div class="menu"> <div class="menu">
<div class="item select action" data-action="select-all"> <div class="item select action" data-action="select-all">
{{.i18n.Tr "admin.notices.select_all"}} {{.i18n.Tr "admin.notices.select_all"}}
</div> </div>
<div class="item select action" data-action="deselect-all"> <div class="item select action" data-action="deselect-all">
{{.i18n.Tr "admin.notices.deselect_all"}} {{.i18n.Tr "admin.notices.deselect_all"}}
</div> </div>
<div class="item select action" data-action="inverse"> <div class="item select action" data-action="inverse">
{{.i18n.Tr "admin.notices.inverse_selection"}} {{.i18n.Tr "admin.notices.inverse_selection"}}
</div> </div>
</div> </div>
</div> </div>
<div class="ui small teal button" id="delete-selection" data-link="{{.Link}}/delete" data-redirect="{{.Link}}?page={{.Page.Current}}"> <div class="ui small teal button" id="delete-selection" data-link="{{.Link}}/delete" data-redirect="{{.Link}}?page={{.Page.Current}}">
{{.i18n.Tr "admin.notices.delete_selected"}} {{.i18n.Tr "admin.notices.delete_selected"}}
</div> </div>
</th> </th>
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
</div> </div>
{{with .Page}} {{with .Page}}
{{if gt .TotalPages 1}} {{if gt .TotalPages 1}}
<div class="center page buttons"> <div class="center page buttons">
<div class="ui borderless pagination menu"> <div class="ui borderless pagination menu">
<a class="{{if .IsFirst}}disabled{{end}} item" href="{{$.Link}}"><i class="angle double left icon"></i> {{$.i18n.Tr "admin.first_page"}}</a> <a class="{{if .IsFirst}}disabled{{end}} item" href="{{$.Link}}"><i class="angle double left icon"></i> {{$.i18n.Tr "admin.first_page"}}</a>
<a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}> <a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}>
<i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}} <i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
</a> </a>
{{range .Pages}} {{range .Pages}}
{{if eq .Num -1}} {{if eq .Num -1}}
<a class="disabled item">...</a> <a class="disabled item">...</a>
{{else}} {{else}}
<a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a> <a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a>
{{end}} {{end}}
{{end}} {{end}}
<a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}> <a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}>
{{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i> {{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i>
</a> </a>
<a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}}&nbsp;<i class="angle double right icon"></i></a> <a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}}&nbsp;<i class="angle double right icon"></i></a>
</div> </div>
</div> </div>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="ui modal" id="detail-modal"> <div class="ui modal" id="detail-modal">
<i class="close icon"></i> <i class="close icon"></i>
<div class="header">{{$.i18n.Tr "admin.notices.view_detail_header"}}</div> <div class="header">{{$.i18n.Tr "admin.notices.view_detail_header"}}</div>
<div class="content"> <div class="content">
<p></p> <p></p>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,65 +1,65 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="admin user"> <div class="admin user">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "admin/navbar" .}} {{template "admin/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.orgs.org_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) {{.i18n.Tr "admin.orgs.org_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}})
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<table class="ui very basic striped table"> <table class="ui very basic striped table">
<thead> <thead>
<tr> <tr>
<th>ID</th> <th>ID</th>
<th>{{.i18n.Tr "admin.orgs.name"}}</th> <th>{{.i18n.Tr "admin.orgs.name"}}</th>
<th>{{.i18n.Tr "admin.orgs.teams"}}</th> <th>{{.i18n.Tr "admin.orgs.teams"}}</th>
<th>{{.i18n.Tr "admin.orgs.members"}}</th> <th>{{.i18n.Tr "admin.orgs.members"}}</th>
<th>{{.i18n.Tr "admin.users.repos"}}</th> <th>{{.i18n.Tr "admin.users.repos"}}</th>
<th>{{.i18n.Tr "admin.users.created"}}</th> <th>{{.i18n.Tr "admin.users.created"}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{range .Orgs}} {{range .Orgs}}
<tr> <tr>
<td>{{.Id}}</td> <td>{{.Id}}</td>
<td><a href="{{.HomeLink}}">{{.Name}}</a></td> <td><a href="{{.HomeLink}}">{{.Name}}</a></td>
<td>{{.NumTeams}}</td> <td>{{.NumTeams}}</td>
<td>{{.NumMembers}}</td> <td>{{.NumMembers}}</td>
<td>{{.NumRepos}}</td> <td>{{.NumRepos}}</td>
<td><span title="{{DateFmtLong .Created}}">{{DateFmtShort .Created}}</span></td> <td><span title="{{DateFmtLong .Created}}">{{DateFmtShort .Created}}</span></td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>
</table> </table>
</div> </div>
{{with .Page}} {{with .Page}}
{{if gt .TotalPages 1}} {{if gt .TotalPages 1}}
<div class="center page buttons"> <div class="center page buttons">
<div class="ui borderless pagination menu"> <div class="ui borderless pagination menu">
<a class="{{if .IsFirst}}disabled{{end}} item" href="{{$.Link}}"><i class="angle double left icon"></i> {{$.i18n.Tr "admin.first_page"}}</a> <a class="{{if .IsFirst}}disabled{{end}} item" href="{{$.Link}}"><i class="angle double left icon"></i> {{$.i18n.Tr "admin.first_page"}}</a>
<a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}> <a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}>
<i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}} <i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
</a> </a>
{{range .Pages}} {{range .Pages}}
{{if eq .Num -1}} {{if eq .Num -1}}
<a class="disabled item">...</a> <a class="disabled item">...</a>
{{else}} {{else}}
<a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a> <a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a>
{{end}} {{end}}
{{end}} {{end}}
<a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}> <a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}>
{{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i> {{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i>
</a> </a>
<a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}}&nbsp;<i class="angle double right icon"></i></a> <a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}}&nbsp;<i class="angle double right icon"></i></a>
</div> </div>
</div> </div>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -6,7 +6,7 @@
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.repos.repo_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) {{.i18n.Tr "admin.repos.repo_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}})
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<table class="ui very basic striped table"> <table class="ui very basic striped table">
@ -20,49 +20,49 @@
<th>{{.i18n.Tr "admin.repos.stars"}}</th> <th>{{.i18n.Tr "admin.repos.stars"}}</th>
<th>{{.i18n.Tr "admin.repos.issues"}}</th> <th>{{.i18n.Tr "admin.repos.issues"}}</th>
<th>{{.i18n.Tr "admin.users.created"}}</th> <th>{{.i18n.Tr "admin.users.created"}}</th>
<th>{{.i18n.Tr "admin.notices.op"}}</th> <th>{{.i18n.Tr "admin.notices.op"}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{range .Repos}} {{range .Repos}}
<tr> <tr>
<td>{{.ID}}</td> <td>{{.ID}}</td>
<td><a href="{{AppSubUrl}}/{{.Owner.Name}}">{{.Owner.Name}}</a></td> <td><a href="{{AppSubUrl}}/{{.Owner.Name}}">{{.Owner.Name}}</a></td>
<td><a href="{{AppSubUrl}}/{{.Owner.Name}}/{{.Name}}">{{.Name}}</a></td> <td><a href="{{AppSubUrl}}/{{.Owner.Name}}/{{.Name}}">{{.Name}}</a></td>
<td><i class="fa fa{{if .IsPrivate}}-check{{end}}-square-o"></i></td> <td><i class="fa fa{{if .IsPrivate}}-check{{end}}-square-o"></i></td>
<td>{{.NumWatches}}</td> <td>{{.NumWatches}}</td>
<td>{{.NumStars}}</td> <td>{{.NumStars}}</td>
<td>{{.NumIssues}}</td> <td>{{.NumIssues}}</td>
<td><span title="{{DateFmtLong .Created}}">{{DateFmtShort .Created}}</span></td> <td><span title="{{DateFmtLong .Created}}">{{DateFmtShort .Created}}</span></td>
<td><a class="delete-button" href="" data-url="{{$.Link}}/delete?page={{$.Page.Current}}" data-id="{{.ID}}"><i class="trash icon text red"></i></a></td> <td><a class="delete-button" href="" data-url="{{$.Link}}/delete?page={{$.Page.Current}}" data-id="{{.ID}}"><i class="trash icon text red"></i></a></td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>
</table> </table>
</div> </div>
{{with .Page}} {{with .Page}}
{{if gt .TotalPages 1}} {{if gt .TotalPages 1}}
<div class="center page buttons"> <div class="center page buttons">
<div class="ui borderless pagination menu"> <div class="ui borderless pagination menu">
<a class="{{if .IsFirst}}disabled{{end}} item" href="{{$.Link}}"><i class="angle double left icon"></i> {{$.i18n.Tr "admin.first_page"}}</a> <a class="{{if .IsFirst}}disabled{{end}} item" href="{{$.Link}}"><i class="angle double left icon"></i> {{$.i18n.Tr "admin.first_page"}}</a>
<a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}> <a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}>
<i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}} <i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
</a> </a>
{{range .Pages}} {{range .Pages}}
{{if eq .Num -1}} {{if eq .Num -1}}
<a class="disabled item">...</a> <a class="disabled item">...</a>
{{else}} {{else}}
<a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a> <a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a>
{{end}} {{end}}
{{end}} {{end}}
<a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}> <a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}>
{{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i> {{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i>
</a> </a>
<a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}}&nbsp;<i class="angle double right icon"></i></a> <a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}}&nbsp;<i class="angle double right icon"></i></a>
</div> </div>
</div> </div>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
@ -70,17 +70,17 @@
</div> </div>
<div class="ui small basic delete modal"> <div class="ui small basic delete modal">
<div class="ui icon header"> <div class="ui icon header">
<i class="trash icon"></i> <i class="trash icon"></i>
{{.i18n.Tr "repo.settings.delete"}} {{.i18n.Tr "repo.settings.delete"}}
</div> </div>
<div class="content"> <div class="content">
<p>{{.i18n.Tr "repo.settings.delete_desc"}}</p> <p>{{.i18n.Tr "repo.settings.delete_desc"}}</p>
<p>{{.i18n.Tr "repo.settings.delete_notices_2"}}</p> <p>{{.i18n.Tr "repo.settings.delete_notices_2"}}</p>
<p>{{.i18n.Tr "repo.settings.delete_notices_fork_1"}}</p> <p>{{.i18n.Tr "repo.settings.delete_notices_fork_1"}}</p>
<p>{{.i18n.Tr "repo.settings.delete_notices_fork_2"}}</p> <p>{{.i18n.Tr "repo.settings.delete_notices_fork_2"}}</p>
<p>{{.i18n.Tr "repo.settings.delete_notices_fork_3"}}</p> <p>{{.i18n.Tr "repo.settings.delete_notices_fork_3"}}</p>
</div> </div>
{{template "base/delete_modal_actions" .}} {{template "base/delete_modal_actions" .}}
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,106 +1,106 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="admin edit user"> <div class="admin edit user">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "admin/navbar" .}} {{template "admin/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.users.edit_account"}} {{.i18n.Tr "admin.users.edit_account"}}
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<div class="inline field {{if .Err_UserName}}error{{end}}"> <div class="inline field {{if .Err_UserName}}error{{end}}">
<label for="user_name">{{.i18n.Tr "username"}}</label> <label for="user_name">{{.i18n.Tr "username"}}</label>
<span>{{.User.Name}}</span> <span>{{.User.Name}}</span>
</div> </div>
<!-- Types and name --> <!-- Types and name -->
<div class="inline required field {{if .Err_LoginType}}error{{end}}"> <div class="inline required field {{if .Err_LoginType}}error{{end}}">
<label>{{.i18n.Tr "admin.users.auth_source"}}</label> <label>{{.i18n.Tr "admin.users.auth_source"}}</label>
<div class="ui selection type dropdown"> <div class="ui selection type dropdown">
<input type="hidden" id="login_type" name="login_type" value="{{.LoginSource.Type}}-{{.LoginSource.ID}}" required> <input type="hidden" id="login_type" name="login_type" value="{{.LoginSource.Type}}-{{.LoginSource.ID}}" required>
<div class="text">{{.i18n.Tr "admin.users.local"}}</div> <div class="text">{{.i18n.Tr "admin.users.local"}}</div>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
<div class="item" data-value="0-0">{{.i18n.Tr "admin.users.local"}}</div> <div class="item" data-value="0-0">{{.i18n.Tr "admin.users.local"}}</div>
{{range .Sources}} {{range .Sources}}
<div class="item" data-value="{{.Type}}-{{.ID}}">{{.Name}}</div> <div class="item" data-value="{{.Type}}-{{.ID}}">{{.Name}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
<div class="required non-local field {{if .Err_LoginName}}error{{end}} {{if eq .User.LoginSource 0}}hide{{end}}"> <div class="required non-local field {{if .Err_LoginName}}error{{end}} {{if eq .User.LoginSource 0}}hide{{end}}">
<label for="login_name">{{.i18n.Tr "admin.users.auth_login_name"}}</label> <label for="login_name">{{.i18n.Tr "admin.users.auth_login_name"}}</label>
<input id="login_name" name="login_name" value="{{.User.LoginName}}" autofocus> <input id="login_name" name="login_name" value="{{.User.LoginName}}" autofocus>
</div> </div>
<div class="field {{if .Err_FullName}}error{{end}}"> <div class="field {{if .Err_FullName}}error{{end}}">
<label for="full_name">{{.i18n.Tr "settings.full_name"}}</label> <label for="full_name">{{.i18n.Tr "settings.full_name"}}</label>
<input id="full_name" name="full_name" value="{{.User.FullName}}"> <input id="full_name" name="full_name" value="{{.User.FullName}}">
</div> </div>
<div class="required field {{if .Err_Email}}error{{end}}"> <div class="required field {{if .Err_Email}}error{{end}}">
<label for="email">{{.i18n.Tr "email"}}</label> <label for="email">{{.i18n.Tr "email"}}</label>
<input id="email" name="email" type="email" value="{{.User.Email}}" autofocus required> <input id="email" name="email" type="email" value="{{.User.Email}}" autofocus required>
</div> </div>
<input class="fake" type="password"> <input class="fake" type="password">
<div class="local field {{if .Err_Password}}error{{end}} {{if not (eq .User.LoginSource 0)}}hide{{end}}"> <div class="local field {{if .Err_Password}}error{{end}} {{if not (eq .User.LoginSource 0)}}hide{{end}}">
<label for="password">{{.i18n.Tr "password"}}</label> <label for="password">{{.i18n.Tr "password"}}</label>
<input id="password" name="password" type="password"> <input id="password" name="password" type="password">
<p class="help">{{.i18n.Tr "admin.users.password_helper"}}</p> <p class="help">{{.i18n.Tr "admin.users.password_helper"}}</p>
</div> </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="{{.User.Website}}" placeholder="e.g. http://mydomain.com or https://mydomain.com"> <input id="website" name="website" type="url" value="{{.User.Website}}" placeholder="e.g. http://mydomain.com or https://mydomain.com">
</div> </div>
<div class="field {{if .Err_Location}}error{{end}}"> <div class="field {{if .Err_Location}}error{{end}}">
<label for="location">{{.i18n.Tr "settings.location"}}</label> <label for="location">{{.i18n.Tr "settings.location"}}</label>
<input id="location" name="location" value="{{.User.Location}}"> <input id="location" name="location" value="{{.User.Location}}">
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.users.is_activated"}}</strong></label> <label><strong>{{.i18n.Tr "admin.users.is_activated"}}</strong></label>
<input name="active" type="checkbox" {{if .User.IsActive}}checked{{end}}> <input name="active" type="checkbox" {{if .User.IsActive}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.users.is_admin"}}</strong></label> <label><strong>{{.i18n.Tr "admin.users.is_admin"}}</strong></label>
<input name="admin" type="checkbox" {{if .User.IsAdmin}}checked{{end}}> <input name="admin" type="checkbox" {{if .User.IsAdmin}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.users.allow_git_hook"}}</strong></label> <label><strong>{{.i18n.Tr "admin.users.allow_git_hook"}}</strong></label>
<input name="allow_git_hook" type="checkbox" {{if .User.CanEditGitHook}}checked{{end}}> <input name="allow_git_hook" type="checkbox" {{if .User.CanEditGitHook}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.users.allow_import_local"}}</strong></label> <label><strong>{{.i18n.Tr "admin.users.allow_import_local"}}</strong></label>
<input name="allow_import_local" type="checkbox" {{if .User.CanImportLocal}}checked{{end}}> <input name="allow_import_local" type="checkbox" {{if .User.CanImportLocal}}checked{{end}}>
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<button class="ui green button">{{.i18n.Tr "admin.users.update_profile"}}</button> <button class="ui green button">{{.i18n.Tr "admin.users.update_profile"}}</button>
<div class="ui red button delete-button" data-url="{{$.Link}}/delete" data-id="{{.User.Id}}">{{.i18n.Tr "admin.users.delete_account"}}</div> <div class="ui red button delete-button" data-url="{{$.Link}}/delete" data-id="{{.User.Id}}">{{.i18n.Tr "admin.users.delete_account"}}</div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="ui small basic delete modal"> <div class="ui small basic delete modal">
<div class="ui icon header"> <div class="ui icon header">
<i class="trash icon"></i> <i class="trash icon"></i>
{{.i18n.Tr "settings.delete_account_title"}} {{.i18n.Tr "settings.delete_account_title"}}
</div> </div>
<div class="content"> <div class="content">
<p>{{.i18n.Tr "settings.delete_account_desc"}}</p> <p>{{.i18n.Tr "settings.delete_account_desc"}}</p>
</div> </div>
{{template "base/delete_modal_actions" .}} {{template "base/delete_modal_actions" .}}
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,72 +1,72 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="admin user"> <div class="admin user">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "admin/navbar" .}} {{template "admin/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.users.user_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) {{.i18n.Tr "admin.users.user_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}})
<div class="ui right"> <div class="ui right">
<a class="ui blue tiny button" href="{{AppSubUrl}}/admin/users/new">{{.i18n.Tr "admin.users.new_account"}}</a> <a class="ui blue tiny button" href="{{AppSubUrl}}/admin/users/new">{{.i18n.Tr "admin.users.new_account"}}</a>
</div>
</h4>
<div class="ui attached table segment">
<table class="ui very basic striped table">
<thead>
<tr>
<th>ID</th>
<th>{{.i18n.Tr "admin.users.name"}}</th>
<th>{{.i18n.Tr "email"}}</th>
<th>{{.i18n.Tr "admin.users.activated"}}</th>
<th>{{.i18n.Tr "admin.users.admin"}}</th>
<th>{{.i18n.Tr "admin.users.repos"}}</th>
<th>{{.i18n.Tr "admin.users.created"}}</th>
<th>{{.i18n.Tr "admin.users.edit"}}</th>
</tr>
</thead>
<tbody>
{{range .Users}}
<tr>
<td>{{.Id}}</td>
<td><a href="{{AppSubUrl}}/{{.Name}}">{{.Name}}</a></td>
<td><span class="text truncate email">{{.Email}}</span></td>
<td><i class="fa fa{{if .IsActive}}-check{{end}}-square-o"></i></td>
<td><i class="fa fa{{if .IsAdmin}}-check{{end}}-square-o"></i></td>
<td>{{.NumRepos}}</td>
<td><span title="{{DateFmtLong .Created}}">{{DateFmtShort .Created }}</span></td>
<td><a href="{{AppSubUrl}}/admin/users/{{.Id}}"><i class="fa fa-pencil-square-o"></i></a></td>
</tr>
{{end}}
</tbody>
</table>
</div>
{{with .Page}}
{{if gt .TotalPages 1}}
<div class="center page buttons">
<div class="ui borderless pagination menu">
<a class="{{if .IsFirst}}disabled{{end}} item" href="{{$.Link}}"><i class="angle double left icon"></i> {{$.i18n.Tr "admin.first_page"}}</a>
<a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}>
<i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
</a>
{{range .Pages}}
{{if eq .Num -1}}
<a class="disabled item">...</a>
{{else}}
<a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a>
{{end}}
{{end}}
<a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}>
{{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i>
</a>
<a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}}&nbsp;<i class="angle double right icon"></i></a>
</div> </div>
</h4>
<div class="ui attached table segment">
<table class="ui very basic striped table">
<thead>
<tr>
<th>ID</th>
<th>{{.i18n.Tr "admin.users.name"}}</th>
<th>{{.i18n.Tr "email"}}</th>
<th>{{.i18n.Tr "admin.users.activated"}}</th>
<th>{{.i18n.Tr "admin.users.admin"}}</th>
<th>{{.i18n.Tr "admin.users.repos"}}</th>
<th>{{.i18n.Tr "admin.users.created"}}</th>
<th>{{.i18n.Tr "admin.users.edit"}}</th>
</tr>
</thead>
<tbody>
{{range .Users}}
<tr>
<td>{{.Id}}</td>
<td><a href="{{AppSubUrl}}/{{.Name}}">{{.Name}}</a></td>
<td><span class="text truncate email">{{.Email}}</span></td>
<td><i class="fa fa{{if .IsActive}}-check{{end}}-square-o"></i></td>
<td><i class="fa fa{{if .IsAdmin}}-check{{end}}-square-o"></i></td>
<td>{{.NumRepos}}</td>
<td><span title="{{DateFmtLong .Created}}">{{DateFmtShort .Created }}</span></td>
<td><a href="{{AppSubUrl}}/admin/users/{{.Id}}"><i class="fa fa-pencil-square-o"></i></a></td>
</tr>
{{end}}
</tbody>
</table>
</div> </div>
{{with .Page}}
{{if gt .TotalPages 1}}
<div class="center page buttons">
<div class="ui borderless pagination menu">
<a class="{{if .IsFirst}}disabled{{end}} item" href="{{$.Link}}"><i class="angle double left icon"></i> {{$.i18n.Tr "admin.first_page"}}</a>
<a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}>
<i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
</a>
{{range .Pages}}
{{if eq .Num -1}}
<a class="disabled item">...</a>
{{else}}
<a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a>
{{end}}
{{end}}
<a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}>
{{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i>
</a>
<a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}}&nbsp;<i class="angle double right icon"></i></a>
</div>
</div>
{{end}}
{{end}} {{end}}
{{end}} </div>
</div> </div>
</div> </div>
</div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,66 +1,66 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="admin new user"> <div class="admin new user">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "admin/navbar" .}} {{template "admin/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "admin.users.new_account"}} {{.i18n.Tr "admin.users.new_account"}}
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<!-- Types and name --> <!-- Types and name -->
<div class="inline required field {{if .Err_LoginType}}error{{end}}"> <div class="inline required field {{if .Err_LoginType}}error{{end}}">
<label>{{.i18n.Tr "admin.users.auth_source"}}</label> <label>{{.i18n.Tr "admin.users.auth_source"}}</label>
<div class="ui selection type dropdown"> <div class="ui selection type dropdown">
<input type="hidden" id="login_type" name="login_type" value="{{.login_type}}" data-password="required" required> <input type="hidden" id="login_type" name="login_type" value="{{.login_type}}" data-password="required" required>
<div class="text">{{.i18n.Tr "admin.users.local"}}</div> <div class="text">{{.i18n.Tr "admin.users.local"}}</div>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
<div class="item" data-value="0-0">{{.i18n.Tr "admin.users.local"}}</div> <div class="item" data-value="0-0">{{.i18n.Tr "admin.users.local"}}</div>
{{range .Sources}} {{range .Sources}}
<div class="item" data-value="{{.Type}}-{{.ID}}">{{.Name}}</div> <div class="item" data-value="{{.Type}}-{{.ID}}">{{.Name}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
<div class="required non-local field {{if .Err_LoginName}}error{{end}} {{if eq .login_type "0-0"}}hide{{end}}"> <div class="required non-local field {{if .Err_LoginName}}error{{end}} {{if eq .login_type "0-0"}}hide{{end}}">
<label for="login_name">{{.i18n.Tr "admin.users.auth_login_name"}}</label> <label for="login_name">{{.i18n.Tr "admin.users.auth_login_name"}}</label>
<input id="login_name" name="login_name" value="{{.login_name}}"> <input id="login_name" name="login_name" value="{{.login_name}}">
</div> </div>
<div class="required field {{if .Err_UserName}}error{{end}}"> <div class="required field {{if .Err_UserName}}error{{end}}">
<label for="user_name">{{.i18n.Tr "username"}}</label> <label for="user_name">{{.i18n.Tr "username"}}</label>
<input id="user_name" name="user_name" value="{{.user_name}}" autofocus required> <input id="user_name" name="user_name" value="{{.user_name}}" autofocus required>
</div> </div>
<div class="required field {{if .Err_Email}}error{{end}}"> <div class="required field {{if .Err_Email}}error{{end}}">
<label for="email">{{.i18n.Tr "email"}}</label> <label for="email">{{.i18n.Tr "email"}}</label>
<input id="email" name="email" type="email" value="{{.email}}" required> <input id="email" name="email" type="email" value="{{.email}}" required>
</div> </div>
<input class="fake" type="password"> <input class="fake" type="password">
<div class="required local field {{if .Err_Password}}error{{end}} {{if not (eq .login_type "0-0")}}hide{{end}}"> <div class="required local field {{if .Err_Password}}error{{end}} {{if not (eq .login_type "0-0")}}hide{{end}}">
<label for="password">{{.i18n.Tr "password"}}</label> <label for="password">{{.i18n.Tr "password"}}</label>
<input id="password" name="password" type="password" value="{{.password}}" {{if eq .login_type "0-0"}}required{{end}}> <input id="password" name="password" type="password" value="{{.password}}" {{if eq .login_type "0-0"}}required{{end}}>
</div> </div>
<!-- Send register notify e-mail --> <!-- Send register notify e-mail -->
{{if .CanSendEmail}} {{if .CanSendEmail}}
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.users.send_register_notify"}}</strong></label> <label><strong>{{.i18n.Tr "admin.users.send_register_notify"}}</strong></label>
<input name="send_notify" type="checkbox" {{if .send_notify}}checked{{end}}> <input name="send_notify" type="checkbox" {{if .send_notify}}checked{{end}}>
</div> </div>
</div> </div>
{{end}} {{end}}
<div class="field"> <div class="field">
<button class="ui green button">{{.i18n.Tr "admin.users.new_account"}}</button> <button class="ui green button">{{.i18n.Tr "admin.users.new_account"}}</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,15 +1,15 @@
{{if .Flash.ErrorMsg}} {{if .Flash.ErrorMsg}}
<div class="ui negative message"> <div class="ui negative message">
<p>{{.Flash.ErrorMsg}}</p> <p>{{.Flash.ErrorMsg}}</p>
</div> </div>
{{end}} {{end}}
{{if .Flash.SuccessMsg}} {{if .Flash.SuccessMsg}}
<div class="ui positive message"> <div class="ui positive message">
<p>{{.Flash.SuccessMsg}}</p> <p>{{.Flash.SuccessMsg}}</p>
</div> </div>
{{end}} {{end}}
{{if .Flash.InfoMsg}} {{if .Flash.InfoMsg}}
<div class="ui info message"> <div class="ui info message">
<p>{{.Flash.InfoMsg}}</p> <p>{{.Flash.InfoMsg}}</p>
</div> </div>
{{end}} {{end}}

View File

@ -1,10 +1,10 @@
<div class="actions"> <div class="actions">
<div class="ui red basic inverted cancel button"> <div class="ui red basic inverted cancel button">
<i class="remove icon"></i> <i class="remove icon"></i>
{{.i18n.Tr "modal.no"}} {{.i18n.Tr "modal.no"}}
</div> </div>
<div class="ui green basic inverted ok button"> <div class="ui green basic inverted ok button">
<i class="checkmark icon"></i> <i class="checkmark icon"></i>
{{.i18n.Tr "modal.yes"}} {{.i18n.Tr "modal.yes"}}
</div> </div>
</div> </div>

View File

@ -1,3 +1,8 @@
{{/*
<html>
<body>
<div>
*/}}
</div> </div>
<footer> <footer>
<div class="ui container"> <div class="ui container">
@ -6,19 +11,19 @@
</div> </div>
<div class="ui right links"> <div class="ui right links">
{{if .ShowFooterBranding}} {{if .ShowFooterBranding}}
<a target="_blank" href="https://github.com/gogits/gogs"><i class="fa fa-github-square"></i><span class="sr-only">GitHub</span></a> <a target="_blank" href="https://github.com/gogits/gogs"><i class="fa fa-github-square"></i><span class="sr-only">GitHub</span></a>
<a target="_blank" href="https://twitter.com/gogitservice"><i class="fa fa-twitter"></i><span class="sr-only">Twitter</span></a> <a target="_blank" href="https://twitter.com/gogitservice"><i class="fa fa-twitter"></i><span class="sr-only">Twitter</span></a>
<a target="_blank" href="http://weibo.com/gogschina"><i class="fa fa-weibo"></i><span class="sr-only">Sina Weibo</span></a> <a target="_blank" href="http://weibo.com/gogschina"><i class="fa fa-weibo"></i><span class="sr-only">Sina Weibo</span></a>
{{end}} {{end}}
<div class="ui language bottom pointing slide up dropdown link item"> <div class="ui language bottom pointing slide up dropdown link item">
<i class="world icon"></i> <i class="world icon"></i>
<div class="text">{{.LangName}}</div> <div class="text">{{.LangName}}</div>
<div class="menu"> <div class="menu">
{{range .AllLangs}} {{range .AllLangs}}
<a class="item {{if eq $.Lang .Lang}}active selected{{end}}" href="{{if eq $.Lang .Lang}}#{{else}}{{$.Link}}?lang={{.Lang}}{{end}}">{{.Name}}</a> <a class="item {{if eq $.Lang .Lang}}active selected{{end}}" href="{{if eq $.Lang .Lang}}#{{else}}{{$.Link}}?lang={{.Lang}}{{end}}">{{.Name}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
<a target="_blank" href="http://gogs.io">{{.i18n.Tr "website"}}</a> <a target="_blank" href="http://gogs.io">{{.i18n.Tr "website"}}</a>
{{if (or .ShowFooterVersion .PageIsAdmin)}}<span class="version">{{GoVer}}</span>{{end}} {{if (or .ShowFooterVersion .PageIsAdmin)}}<span class="version">{{GoVer}}</span>{{end}}
</div> </div>
@ -26,24 +31,24 @@
</footer> </footer>
</body> </body>
<!-- Third-party libraries --> <!-- Third-party libraries -->
{{if .RequireHighlightJS}} {{if .RequireHighlightJS}}
<link rel="stylesheet" href="{{AppSubUrl}}/css/highlight-8.9.1/github.css"> <link rel="stylesheet" href="{{AppSubUrl}}/css/highlight-8.9.1/github.css">
<script src="{{AppSubUrl}}/js/libs/highlight-8.9.1.pack.js"></script> <script src="{{AppSubUrl}}/js/libs/highlight-8.9.1.pack.js"></script>
{{end}} {{end}}
{{if .RequireMinicolors}} {{if .RequireMinicolors}}
<link rel="stylesheet" href="{{AppSubUrl}}/css/jquery.minicolors-2.1.12.css"> <link rel="stylesheet" href="{{AppSubUrl}}/css/jquery.minicolors-2.1.12.css">
<script src="{{AppSubUrl}}/js/libs/jquery.minicolors-2.1.12.min.js"></script> <script src="{{AppSubUrl}}/js/libs/jquery.minicolors-2.1.12.min.js"></script>
{{end}} {{end}}
{{if .RequireDatetimepicker}} {{if .RequireDatetimepicker}}
<link rel="stylesheet" href="{{AppSubUrl}}/css/jquery.datetimepicker-2.4.5.css"> <link rel="stylesheet" href="{{AppSubUrl}}/css/jquery.datetimepicker-2.4.5.css">
<script src="{{AppSubUrl}}/js/libs/jquery.datetimepicker-2.4.5.js"></script> <script src="{{AppSubUrl}}/js/libs/jquery.datetimepicker-2.4.5.js"></script>
{{end}} {{end}}
{{if .RequireDropzone}} {{if .RequireDropzone}}
<link rel="stylesheet" href="{{AppSubUrl}}/css/dropzone-4.2.0.css"> <link rel="stylesheet" href="{{AppSubUrl}}/css/dropzone-4.2.0.css">
<script src="{{AppSubUrl}}/js/libs/dropzone-4.2.0.js"></script> <script src="{{AppSubUrl}}/js/libs/dropzone-4.2.0.js"></script>
{{end}} {{end}}
<script src="{{AppSubUrl}}/js/libs/emojify-1.1.0.min.js"></script> <script src="{{AppSubUrl}}/js/libs/emojify-1.1.0.min.js"></script>
<script src="{{AppSubUrl}}/js/libs/clipboard-1.5.5.min.js"></script> <script src="{{AppSubUrl}}/js/libs/clipboard-1.5.5.min.js"></script>
</html> </html>

View File

@ -10,8 +10,8 @@
<meta name="_csrf" content="{{.CsrfToken}}" /> <meta name="_csrf" content="{{.CsrfToken}}" />
<meta name="_suburl" content="{{AppSubUrl}}" /> <meta name="_suburl" content="{{AppSubUrl}}" />
{{if .GoGetImport}} {{if .GoGetImport}}
<meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}"> <meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}">
<meta name="go-source" content="{{.GoGetImport}} _ {{.GoDocDirectory}} {{.GoDocFile}}"> <meta name="go-source" content="{{.GoGetImport}} _ {{.GoDocDirectory}} {{.GoDocFile}}">
{{end}} {{end}}
<link rel="shortcut icon" href="{{AppSubUrl}}/img/favicon.png" /> <link rel="shortcut icon" href="{{AppSubUrl}}/img/favicon.png" />
@ -20,8 +20,8 @@
<link rel="stylesheet" href="{{AppSubUrl}}/css/font-awesome-4.4.0.min.css"> <link rel="stylesheet" href="{{AppSubUrl}}/css/font-awesome-4.4.0.min.css">
{{if .RequireSimpleMDE}} {{if .RequireSimpleMDE}}
<link rel="stylesheet" href="{{AppSubUrl}}/css/simplemde-1.8.1.min.css"> <link rel="stylesheet" href="{{AppSubUrl}}/css/simplemde-1.8.1.min.css">
<script src="{{AppSubUrl}}/js/libs/simplemde-1.8.1.min.js"></script> <script src="{{AppSubUrl}}/js/libs/simplemde-1.8.1.min.js"></script>
{{end}} {{end}}
<!-- Stylesheet --> <!-- Stylesheet -->
@ -39,110 +39,115 @@
<noscript>Please enable JavaScript in your browser!</noscript> <noscript>Please enable JavaScript in your browser!</noscript>
{{if not .PageIsInstall}} {{if not .PageIsInstall}}
<div class="following bar light"> <div class="following bar light">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
<div class="column"> <div class="column">
<div class="ui top secondary menu"> <div class="ui top secondary menu">
<a class="item brand" href="{{AppSubUrl}}/"> <a class="item brand" href="{{AppSubUrl}}/">
<img class="ui mini image" src="{{AppSubUrl}}/img/favicon.png"> <img class="ui mini image" src="{{AppSubUrl}}/img/favicon.png">
</a> </a>
{{if .IsSigned}} {{if .IsSigned}}
<a class="item{{if .PageIsDashboard}} active{{end}}" href="{{AppSubUrl}}/">{{.i18n.Tr "dashboard"}}</a> <a class="item{{if .PageIsDashboard}} active{{end}}" href="{{AppSubUrl}}/">{{.i18n.Tr "dashboard"}}</a>
<a class="item{{if .PageIsIssues}} active{{end}}" href="{{AppSubUrl}}/issues">{{.i18n.Tr "issues"}}</a> <a class="item{{if .PageIsIssues}} active{{end}}" href="{{AppSubUrl}}/issues">{{.i18n.Tr "issues"}}</a>
<a class="item{{if .PageIsPulls}} active{{end}}" href="{{AppSubUrl}}/pulls">{{.i18n.Tr "pull_requests"}}</a> <a class="item{{if .PageIsPulls}} active{{end}}" href="{{AppSubUrl}}/pulls">{{.i18n.Tr "pull_requests"}}</a>
{{else}} {{else}}
<a class="item{{if .PageIsHome}} active{{end}}" href="{{AppSubUrl}}/">{{.i18n.Tr "home"}}</a> <a class="item{{if .PageIsHome}} active{{end}}" href="{{AppSubUrl}}/">{{.i18n.Tr "home"}}</a>
{{end}} {{end}}
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore">{{.i18n.Tr "explore"}}</a> <a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore">{{.i18n.Tr "explore"}}</a>
<!-- <div class="item"> {{/*<div class="item">
<div class="ui icon input"> <div class="ui icon input">
<input class="searchbox" type="text" placeholder="{{.i18n.Tr "search_project"}}"> <input class="searchbox" type="text" placeholder="{{.i18n.Tr "search_project"}}">
<i class="search icon"></i> <i class="search icon"></i>
</div> </div>
</div> --> </div>*/}}
{{if .IsSigned}} {{if .IsSigned}}
<div class="right menu"> <div class="right menu">
<div class="ui dropdown head link jump item poping up" data-content="{{.i18n.Tr "create_new"}}" data-variation="tiny inverted"> <div class="ui dropdown head link jump item poping up" data-content="{{.i18n.Tr "create_new"}}" data-variation="tiny inverted">
<span class="text"> <span class="text">
<i class="octicon octicon-plus"></i> <i class="octicon octicon-plus"></i>
<i class="octicon octicon-triangle-down"></i> <i class="octicon octicon-triangle-down"></i>
</span> </span>
<div class="menu"> <div class="menu">
<a class="item" href="{{AppSubUrl}}/repo/create"> <a class="item" href="{{AppSubUrl}}/repo/create">
<i class="icon octicon octicon-repo-create"></i> {{.i18n.Tr "new_repo"}} <i class="icon octicon octicon-repo-create"></i> {{.i18n.Tr "new_repo"}}
</a> </a>
<a class="item" href="{{AppSubUrl}}/repo/migrate"> <a class="item" href="{{AppSubUrl}}/repo/migrate">
<i class="icon octicon octicon-repo-clone"></i> {{.i18n.Tr "new_migrate"}} <i class="icon octicon octicon-repo-clone"></i> {{.i18n.Tr "new_migrate"}}
</a> </a>
<a class="item" href="{{AppSubUrl}}/org/create"> <a class="item" href="{{AppSubUrl}}/org/create">
<i class="icon octicon octicon-organization"></i> {{.i18n.Tr "new_org"}} <i class="icon octicon octicon-organization"></i> {{.i18n.Tr "new_org"}}
</a> </a>
</div><!-- end content create new menu --> </div><!-- end content create new menu -->
</div><!-- end dropdown menu create new --> </div><!-- end dropdown menu create new -->
<div class="ui dropdown head link jump item poping up" tabindex="-1" data-content="{{.i18n.Tr "user_profile_and_more"}}" data-variation="tiny inverted"> <div class="ui dropdown head link jump item poping up" tabindex="-1" data-content="{{.i18n.Tr "user_profile_and_more"}}" data-variation="tiny inverted">
<span class="text avatar"> <span class="text avatar">
<img class="ui small rounded image" src="{{.SignedUser.AvatarLink}}"> <img class="ui small rounded image" src="{{.SignedUser.AvatarLink}}">
<i class="octicon octicon-triangle-down" tabindex="-1"></i> <i class="octicon octicon-triangle-down" tabindex="-1"></i>
</span> </span>
<div class="menu" tabindex="-1"> <div class="menu" tabindex="-1">
<div class="ui header"> <div class="ui header">
{{.i18n.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong> {{.i18n.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
</div> </div>
<div class="divider"></div> <div class="divider"></div>
<a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}"> <a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}">
<i class="icon octicon octicon-person"></i> <i class="icon octicon octicon-person"></i>
{{.i18n.Tr "your_profile"}}<!-- Your profile --> {{.i18n.Tr "your_profile"}}<!-- Your profile -->
</a> </a>
<a class="{{if .PageIsUserSettings}}active{{end}} item" href="{{AppSubUrl}}/user/settings"> <a class="{{if .PageIsUserSettings}}active{{end}} item" href="{{AppSubUrl}}/user/settings">
<i class="icon octicon octicon-settings"></i> <i class="icon octicon octicon-settings"></i>
{{.i18n.Tr "your_settings"}}<!-- Your settings --> {{.i18n.Tr "your_settings"}}<!-- Your settings -->
</a> </a>
<a class="item" target="_blank" href="http://gogs.io/docs" rel="noreferrer"> <a class="item" target="_blank" href="http://gogs.io/docs" rel="noreferrer">
<i class="icon octicon octicon-question"></i> <i class="icon octicon octicon-question"></i>
{{.i18n.Tr "help"}}<!-- Help --> {{.i18n.Tr "help"}}<!-- Help -->
</a> </a>
{{if .IsAdmin}} {{if .IsAdmin}}
<div class="divider"></div> <div class="divider"></div>
<a class="{{if .PageIsAdmin}}active{{end}} item" href="{{AppSubUrl}}/admin"> <a class="{{if .PageIsAdmin}}active{{end}} item" href="{{AppSubUrl}}/admin">
<i class="icon settings"></i> <i class="icon settings"></i>
{{.i18n.Tr "admin_panel"}}<!-- Admin Panel --> {{.i18n.Tr "admin_panel"}}<!-- Admin Panel -->
</a> </a>
{{end}}
<div class="divider"></div>
<a class="item" href="{{AppSubUrl}}/user/logout">
<i class="icon octicon octicon-sign-out"></i>
{{.i18n.Tr "sign_out"}}<!-- Sign Out -->
</a>
</div><!-- end content avatar menu -->
</div><!-- end dropdown avatar menu -->
</div><!-- end signed user right menu -->
{{else}}
<a class="item" target="_blank" href="http://gogs.io/docs" rel="noreferrer">{{.i18n.Tr "help"}}</a>
<div class="right menu">
{{if .ShowRegistrationButton}}
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up">
<i class="icon octicon octicon-person-add"></i> {{.i18n.Tr "register"}}
</a>
{{end}} {{end}}
<a class="item{{if .PageIsSignIn}} active{{end}}" href="{{AppSubUrl}}/user/login">
<div class="divider"></div> <i class="icon octicon octicon-sign-in"></i> {{.i18n.Tr "sign_in"}}
<a class="item" href="{{AppSubUrl}}/user/logout">
<i class="icon octicon octicon-sign-out"></i>
{{.i18n.Tr "sign_out"}}<!-- Sign Out -->
</a> </a>
</div><!-- end content avatar menu --> </div><!-- end anonymous right menu -->
</div><!-- end dropdown avatar menu -->
</div><!-- end signed user right menu -->
{{else}}
<a class="item" target="_blank" href="http://gogs.io/docs" rel="noreferrer">{{.i18n.Tr "help"}}</a>
<div class="right menu">
{{if .ShowRegistrationButton}}
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up">
<i class="icon octicon octicon-person-add"></i> {{.i18n.Tr "register"}}
</a>
{{end}} {{end}}
<a class="item{{if .PageIsSignIn}} active{{end}}" href="{{AppSubUrl}}/user/login"> </div><!-- end top menu -->
<i class="icon octicon octicon-sign-in"></i> {{.i18n.Tr "sign_in"}} </div><!-- end column -->
</a> </div><!-- end grid -->
</div><!-- end anonymous right menu --> </div><!-- end container -->
</div><!-- end bar -->
{{end}}
</div><!-- end top menu -->
</div><!-- end column -->
</div><!-- end grid -->
</div><!-- end container -->
</div><!-- end bar -->
{{end}} {{end}}
{{/*
</div>
</body>
</html>
*/}}

View File

@ -5,4 +5,4 @@
{{.i18n.Tr "explore.repos"}} {{.i18n.Tr "explore.repos"}}
</a> </a>
</div> </div>
</div> </div>

View File

@ -1,23 +1,23 @@
<div class="ui repository list"> <div class="ui repository list">
{{range .Repos}} {{range .Repos}}
<div class="item"> <div class="item">
<div class="ui header"> <div class="ui header">
<a href="{{AppSubUrl}}/{{if .Owner}}{{.Owner.Name}}{{else if $.Org}}{{$.Org.Name}}{{else}}{{$.Owner.Name}}{{end}}/{{.Name}}">{{if $.PageIsExplore}}{{.Owner.Name}} / {{end}}{{.Name}}</a> <a href="{{AppSubUrl}}/{{if .Owner}}{{.Owner.Name}}{{else if $.Org}}{{$.Org.Name}}{{else}}{{$.Owner.Name}}{{end}}/{{.Name}}">{{if $.PageIsExplore}}{{.Owner.Name}} / {{end}}{{.Name}}</a>
{{if .IsPrivate}} {{if .IsPrivate}}
<span class="text gold"><i class="icon octicon octicon-lock"></i></span> <span class="text gold"><i class="icon octicon octicon-lock"></i></span>
{{else if .IsFork}} {{else if .IsFork}}
<span><i class="icon octicon octicon-repo-forked"></i></span> <span><i class="icon octicon octicon-repo-forked"></i></span>
{{else if .IsMirror}} {{else if .IsMirror}}
<span><i class="icon octicon octicon-repo-clone"></i></span> <span><i class="icon octicon octicon-repo-clone"></i></span>
{{end}} {{end}}
<div class="ui right metas"> <div class="ui right metas">
<span class="text grey"><i class="octicon octicon-star"></i> {{.NumStars}}</span> <span class="text grey"><i class="octicon octicon-star"></i> {{.NumStars}}</span>
<span class="text grey"><i class="octicon octicon-git-branch"></i> {{.NumForks}}</span> <span class="text grey"><i class="octicon octicon-git-branch"></i> {{.NumForks}}</span>
</div> </div>
</div> </div>
{{if .Description}}<p>{{.Description}}</p>{{end}} {{if .Description}}<p>{{.Description}}</p>{{end}}
<p class="time">{{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Updated $.i18n.Lang}}</p> <p class="time">{{$.i18n.Tr "org.repo_updated"}} {{TimeSince .Updated $.i18n.Lang}}</p>
</div> </div>
{{end}} {{end}}
</div> </div>

View File

@ -4,28 +4,28 @@
<div class="ui grid"> <div class="ui grid">
{{template "explore/navbar" .}} {{template "explore/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "explore/repo_list" .}} {{template "explore/repo_list" .}}
{{with .Page}} {{with .Page}}
{{if gt .TotalPages 1}} {{if gt .TotalPages 1}}
<div class="center page buttons"> <div class="center page buttons">
<div class="ui borderless pagination menu"> <div class="ui borderless pagination menu">
<a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}> <a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}>
<i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}} <i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
</a> </a>
{{range .Pages}} {{range .Pages}}
{{if eq .Num -1}} {{if eq .Num -1}}
<a class="disabled item">...</a> <a class="disabled item">...</a>
{{else}} {{else}}
<a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a> <a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a>
{{end}} {{end}}
{{end}} {{end}}
<a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}> <a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}>
{{$.i18n.Tr "repo.issues.next"}} <i class="icon right arrow"></i> {{$.i18n.Tr "repo.issues.next"}} <i class="icon right arrow"></i>
</a> </a>
</div> </div>
</div> </div>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>

View File

@ -3,127 +3,127 @@
<div class="ui stackable middle very relaxed page grid"> <div class="ui stackable middle very relaxed page grid">
<div class="sixteen wide center aligned centered column"> <div class="sixteen wide center aligned centered column">
<div> <div>
<img class="logo" src="{{AppSubUrl}}/img/gogs-lg.png" /> <img class="logo" src="{{AppSubUrl}}/img/gogs-lg.png" />
</div> </div>
<div class="hero"> <div class="hero">
<h1 class="ui icon header title"> <h1 class="ui icon header title">
Gogs - Go Git Service Gogs - Go Git Service
</h1> </h1>
<h2>{{.i18n.Tr "app_desc"}}</h2> <h2>{{.i18n.Tr "app_desc"}}</h2>
</div> </div>
</div> </div>
</div> </div>
{{if eq .Lang "de-DE"}} {{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-flame"></i> Einfach zu installieren
</h1> </h1>
<p class="large"> <p class="large">
Starte einfach <a target="_blank" href="http://gogs.io/docs/installation/install_from_binary.html">die Anwendung</a> für deine Plattform. Gogs gibt es auch für <a target="_blank" href="https://github.com/gogits/gogs/tree/master/docker">Docker</a>, <a target="_blank" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a> oder als <a target="_blank" href="http://gogs.io/docs/installation/install_from_packages.html">Installationspaket</a>. Starte einfach <a target="_blank" href="http://gogs.io/docs/installation/install_from_binary.html">die Anwendung</a> für deine Plattform. Gogs gibt es auch für <a target="_blank" href="https://github.com/gogits/gogs/tree/master/docker">Docker</a>, <a target="_blank" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a> oder als <a target="_blank" href="http://gogs.io/docs/installation/install_from_packages.html">Installationspaket</a>.
</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-device-desktop"></i> Plattformübergreifend
</h1> </h1>
<p class="large"> <p class="large">
Gogs läuft überall. <a target="_blank" href="http://golang.org/">Go</a> kompiliert für: Windows, Mac OS X, Linux, ARM, etc. Wähle dasjenige System, was dir am meisten gefällt! Gogs läuft überall. <a target="_blank" href="http://golang.org/">Go</a> kompiliert für: Windows, Mac OS X, Linux, ARM, etc. Wähle dasjenige System, was dir am meisten gefällt!
</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-rocket"></i> Leichtgewicht
</h1> </h1>
<p class="large"> <p class="large">
Gogs hat minimale Systemanforderungen und kann selbst auf einem günstigen und stromsparenden Raspberry Pi betrieben werden. Gogs hat minimale Systemanforderungen und kann selbst auf einem günstigen und stromsparenden Raspberry Pi betrieben werden.
</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> Quelloffen
</h1> </h1>
<p class="large"> <p class="large">
Der komplette Code befindet sich auf <a target="_blank" href="https://github.com/gogits/gogs/">GitHub</a>! Unterstütze uns bei der Verbesserung dieses Projekts. Trau dich! Der komplette Code befindet sich auf <a target="_blank" href="https://github.com/gogits/gogs/">GitHub</a>! Unterstütze uns bei der Verbesserung dieses Projekts. Trau dich!
</p> </p>
</div> </div>
</div> </div>
{{else if eq .Lang "zh-CN"}} {{else if eq .Lang "zh-CN"}}
<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> 易安装 <i class="octicon octicon-flame"></i> 易安装
</h1> </h1>
<p class="large"> <p class="large">
您除了可以根据操作系统平台通过 <a target="_blank" href="http://gogs.io/docs/installation/install_from_binary.html">二进制运行</a>,还可以通过 <a target="_blank" href="https://github.com/gogits/gogs/tree/master/docker">Docker</a> 或 <a target="_blank" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a>,以及 <a target="_blank" href="http://gogs.io/docs/installation/install_from_packages.html">包管理</a> 安装。 您除了可以根据操作系统平台通过 <a target="_blank" href="http://gogs.io/docs/installation/install_from_binary.html">二进制运行</a>,还可以通过 <a target="_blank" href="https://github.com/gogits/gogs/tree/master/docker">Docker</a> 或 <a target="_blank" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a>,以及 <a target="_blank" href="http://gogs.io/docs/installation/install_from_packages.html">包管理</a> 安装。
</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> 跨平台 <i class="octicon octicon-device-desktop"></i> 跨平台
</h1> </h1>
<p class="large"> <p class="large">
任何 <a target="_blank" href="http://golang.org/">Go 语言</a> 支持的平台都可以运行 Gogs包括 Windows、Mac、Linux 以及 ARM。挑一个您喜欢的就行 任何 <a target="_blank" href="http://golang.org/">Go 语言</a> 支持的平台都可以运行 Gogs包括 Windows、Mac、Linux 以及 ARM。挑一个您喜欢的就行
</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> 轻量级 <i class="octicon octicon-rocket"></i> 轻量级
</h1> </h1>
<p class="large"> <p class="large">
一个廉价的树莓派的配置足以满足 Gogs 的最低系统硬件要求。最大程度上节省您的服务器资源! 一个廉价的树莓派的配置足以满足 Gogs 的最低系统硬件要求。最大程度上节省您的服务器资源!
</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> 开源化 <i class="octicon octicon-code"></i> 开源化
</h1> </h1>
<p class="large"> <p class="large">
所有的代码都开源在 <a target="_blank" href="https://github.com/gogits/gogs/">GitHub</a> 上,赶快加入我们来共同发展这个伟大的项目!还等什么?成为贡献者吧! 所有的代码都开源在 <a target="_blank" href="https://github.com/gogits/gogs/">GitHub</a> 上,赶快加入我们来共同发展这个伟大的项目!还等什么?成为贡献者吧!
</p> </p>
</div> </div>
</div> </div>
{{else}} {{else}}
<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> Easy to install <i class="octicon octicon-flame"></i> Easy to install
</h1> </h1>
<p class="large"> <p class="large">
Simply <a target="_blank" href="http://gogs.io/docs/installation/install_from_binary.html">run the binary</a> for your platform. Or ship Gogs with <a target="_blank" href="https://github.com/gogits/gogs/tree/master/docker">Docker</a> or <a target="_blank" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a>, or get it <a target="_blank" href="http://gogs.io/docs/installation/install_from_packages.html">packaged</a>. Simply <a target="_blank" href="http://gogs.io/docs/installation/install_from_binary.html">run the binary</a> for your platform. Or ship Gogs with <a target="_blank" href="https://github.com/gogits/gogs/tree/master/docker">Docker</a> or <a target="_blank" href="https://github.com/geerlingguy/ansible-vagrant-examples/tree/master/gogs">Vagrant</a>, or get it <a target="_blank" href="http://gogs.io/docs/installation/install_from_packages.html">packaged</a>.
</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> Cross-platform <i class="octicon octicon-device-desktop"></i> Cross-platform
</h1> </h1>
<p class="large"> <p class="large">
Gogs runs anywhere <a target="_blank" href="http://golang.org/">Go</a> can compile for: Windows, Mac OS X, Linux, ARM, etc. Choose the one you love! Gogs runs anywhere <a target="_blank" href="http://golang.org/">Go</a> can compile for: Windows, Mac OS X, Linux, ARM, etc. Choose the one you love!
</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> Lightweight <i class="octicon octicon-rocket"></i> Lightweight
</h1> </h1>
<p class="large"> <p class="large">
Gogs has low minimal requirements and can run on an inexpensive Raspberry Pi. Save your machine energy! Gogs has low minimal requirements and can run on an inexpensive Raspberry Pi. Save your machine energy!
</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> Open Source <i class="octicon octicon-code"></i> Open Source
</h1> </h1>
<p class="large"> <p class="large">
It's all on <a target="_blank" href="https://github.com/gogits/gogs/">GitHub</a>! Join us by contributing to make this project even better. Don't be shy to be a contributor! It's all on <a target="_blank" href="https://github.com/gogits/gogs/">GitHub</a>! Join us by contributing to make this project even better. Don't be shy to be a contributor!
</p> </p>
</div> </div>
</div> </div>
{{end}} {{end}}
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -3,228 +3,228 @@
<div class="ui middle very relaxed page grid"> <div class="ui middle very relaxed page grid">
<div class="sixteen wide center aligned centered column"> <div class="sixteen wide center aligned centered column">
<h3 class="ui top attached header"> <h3 class="ui top attached header">
{{.i18n.Tr "install.title"}} {{.i18n.Tr "install.title"}}
</h3> </h3>
<div class="ui attached segment"> <div class="ui attached segment">
{{template "base/alert" .}} {{template "base/alert" .}}
<p>{{.i18n.Tr "install.docker_helper" "https://github.com/gogits/gogs/tree/master/docker" | Safe}}</p> <p>{{.i18n.Tr "install.docker_helper" "https://github.com/gogits/gogs/tree/master/docker" | Safe}}</p>
<form class="ui form" action="{{AppSubUrl}}/install" method="post"> <form class="ui form" action="{{AppSubUrl}}/install" method="post">
<!-- Dtabase Settings --> <!-- Dtabase Settings -->
<h4 class="ui dividing header">{{.i18n.Tr "install.db_title"}}</h4> <h4 class="ui dividing header">{{.i18n.Tr "install.db_title"}}</h4>
<p>{{.i18n.Tr "install.requite_db_desc"}}</p> <p>{{.i18n.Tr "install.requite_db_desc"}}</p>
<div class="inline required field {{if .Err_DbType}}error{{end}}"> <div class="inline required field {{if .Err_DbType}}error{{end}}">
<label>{{.i18n.Tr "install.db_type"}}</label> <label>{{.i18n.Tr "install.db_type"}}</label>
<div class="ui selection database type dropdown"> <div class="ui selection database type dropdown">
<input type="hidden" id="db_type" name="db_type" value="{{.CurDbOption}}"> <input type="hidden" id="db_type" name="db_type" value="{{.CurDbOption}}">
<div class="text">{{.CurDbOption}}</div> <div class="text">{{.CurDbOption}}</div>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
{{range .DbOptions}} {{range .DbOptions}}
<div class="item" data-value="{{.}}">{{.}}</div> <div class="item" data-value="{{.}}">{{.}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
<div id="sql_settings" class="{{if or (eq .CurDbOption "SQLite3") (eq .CurDbOption "TiDB")}}hide{{end}}"> <div id="sql_settings" class="{{if or (eq .CurDbOption "SQLite3") (eq .CurDbOption "TiDB")}}hide{{end}}">
<div class="inline required field {{if .Err_DbSetting}}error{{end}}"> <div class="inline required field {{if .Err_DbSetting}}error{{end}}">
<label for="db_host">{{.i18n.Tr "install.host"}}</label> <label for="db_host">{{.i18n.Tr "install.host"}}</label>
<input id="db_host" name="db_host" value="{{.db_host}}"> <input id="db_host" name="db_host" value="{{.db_host}}">
</div> </div>
<div class="inline required field {{if .Err_DbSetting}}error{{end}}"> <div class="inline required field {{if .Err_DbSetting}}error{{end}}">
<label for="db_user">{{.i18n.Tr "install.user"}}</label> <label for="db_user">{{.i18n.Tr "install.user"}}</label>
<input id="db_user" name="db_user" value="{{.db_user}}"> <input id="db_user" name="db_user" value="{{.db_user}}">
</div> </div>
<div class="inline required field {{if .Err_DbSetting}}error{{end}}"> <div class="inline required field {{if .Err_DbSetting}}error{{end}}">
<label for="db_passwd">{{.i18n.Tr "install.password"}}</label> <label for="db_passwd">{{.i18n.Tr "install.password"}}</label>
<input id="db_passwd" name="db_passwd" type="password" value="{{.db_passwd}}"> <input id="db_passwd" name="db_passwd" type="password" value="{{.db_passwd}}">
</div> </div>
<div class="inline required field {{if .Err_DbSetting}}error{{end}}"> <div class="inline required field {{if .Err_DbSetting}}error{{end}}">
<label for="db_name">{{.i18n.Tr "install.db_name"}}</label> <label for="db_name">{{.i18n.Tr "install.db_name"}}</label>
<input id="db_name" name="db_name" value="{{.db_name}}"> <input id="db_name" name="db_name" value="{{.db_name}}">
<span class="help">{{.i18n.Tr "install.db_helper"}}</span> <span class="help">{{.i18n.Tr "install.db_helper"}}</span>
</div> </div>
</div> </div>
<div id="pgsql_settings" class="{{if not (eq .CurDbOption "PostgreSQL")}}hide{{end}}"> <div id="pgsql_settings" class="{{if not (eq .CurDbOption "PostgreSQL")}}hide{{end}}">
<div class="inline required field"> <div class="inline required field">
<label>{{.i18n.Tr "install.ssl_mode"}}</label> <label>{{.i18n.Tr "install.ssl_mode"}}</label>
<div class="ui selection database type dropdown"> <div class="ui selection database type dropdown">
<input type="hidden" name="ssl_mode" value="{{if .ssl_mode}}{{.ssl_mode}}{{else}}disable{{end}}"> <input type="hidden" name="ssl_mode" value="{{if .ssl_mode}}{{.ssl_mode}}{{else}}disable{{end}}">
<div class="default text">disable</div> <div class="default text">disable</div>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
<div class="item" data-value="disable">Disable</div> <div class="item" data-value="disable">Disable</div>
<div class="item" data-value="require">Require</div> <div class="item" data-value="require">Require</div>
<div class="item" data-value="verify-full">Verify Full</div> <div class="item" data-value="verify-full">Verify Full</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div id="sqlite_settings" class="{{if not (or (eq .CurDbOption "SQLite3") (eq .CurDbOption "TiDB"))}}hide{{end}}"> <div id="sqlite_settings" class="{{if not (or (eq .CurDbOption "SQLite3") (eq .CurDbOption "TiDB"))}}hide{{end}}">
<div class="inline required field {{if or .Err_DbPath .Err_DbSetting}}error{{end}}"> <div class="inline required field {{if or .Err_DbPath .Err_DbSetting}}error{{end}}">
<label for="db_path">{{.i18n.Tr "install.path"}}</label> <label for="db_path">{{.i18n.Tr "install.path"}}</label>
<input id="db_path" name="db_path" value="{{.db_path}}"> <input id="db_path" name="db_path" value="{{.db_path}}">
<span class="help">{{.i18n.Tr "install.sqlite_helper"}}</span> <span class="help">{{.i18n.Tr "install.sqlite_helper"}}</span>
</div> </div>
</div> </div>
<!-- General Settings --> <!-- General Settings -->
<h4 class="ui dividing header">{{.i18n.Tr "install.general_title"}}</h4> <h4 class="ui dividing header">{{.i18n.Tr "install.general_title"}}</h4>
<div class="inline required field {{if .Err_AppName}}error{{end}}"> <div class="inline required field {{if .Err_AppName}}error{{end}}">
<label for="app_name">{{.i18n.Tr "install.app_name"}}</label> <label for="app_name">{{.i18n.Tr "install.app_name"}}</label>
<input id="app_name" name="app_name" value="{{.app_name}}" required> <input id="app_name" name="app_name" value="{{.app_name}}" required>
<span class="help">{{.i18n.Tr "install.app_name_helper"}}</span> <span class="help">{{.i18n.Tr "install.app_name_helper"}}</span>
</div> </div>
<div class="inline required field {{if .Err_RepoRootPath}}error{{end}}"> <div class="inline required field {{if .Err_RepoRootPath}}error{{end}}">
<label for="repo_root_path">{{.i18n.Tr "install.repo_path"}}</label> <label for="repo_root_path">{{.i18n.Tr "install.repo_path"}}</label>
<input id="repo_root_path" name="repo_root_path" value="{{.repo_root_path}}" required> <input id="repo_root_path" name="repo_root_path" value="{{.repo_root_path}}" required>
<span class="help">{{.i18n.Tr "install.repo_path_helper"}}</span> <span class="help">{{.i18n.Tr "install.repo_path_helper"}}</span>
</div> </div>
<div class="inline required field {{if .Err_RunUser}}error{{end}}"> <div class="inline required field {{if .Err_RunUser}}error{{end}}">
<label for="run_user">{{.i18n.Tr "install.run_user"}}</label> <label for="run_user">{{.i18n.Tr "install.run_user"}}</label>
<input id="run_user" name="run_user" value="{{.run_user}}" required> <input id="run_user" name="run_user" value="{{.run_user}}" required>
<span class="help">{{.i18n.Tr "install.run_user_helper"}}</span> <span class="help">{{.i18n.Tr "install.run_user_helper"}}</span>
</div> </div>
<div class="inline required field"> <div class="inline required field">
<label for="domain">{{.i18n.Tr "install.domain"}}</label> <label for="domain">{{.i18n.Tr "install.domain"}}</label>
<input id="domain" name="domain" value="{{.domain}}" placeholder="e.g. try.gogs.io" required> <input id="domain" name="domain" value="{{.domain}}" placeholder="e.g. try.gogs.io" required>
<span class="help">{{.i18n.Tr "install.domain_helper"}}</span> <span class="help">{{.i18n.Tr "install.domain_helper"}}</span>
</div> </div>
<div class="inline required field"> <div class="inline required field">
<label for="ssh_port">{{.i18n.Tr "install.ssh_port"}}</label> <label for="ssh_port">{{.i18n.Tr "install.ssh_port"}}</label>
<input id="ssh_port" name="ssh_port" value="{{.ssh_port}}"> <input id="ssh_port" name="ssh_port" value="{{.ssh_port}}">
<span class="help">{{.i18n.Tr "install.ssh_port_helper"}}</span> <span class="help">{{.i18n.Tr "install.ssh_port_helper"}}</span>
</div> </div>
<div class="inline required field"> <div class="inline required field">
<label for="http_port">{{.i18n.Tr "install.http_port"}}</label> <label for="http_port">{{.i18n.Tr "install.http_port"}}</label>
<input id="http_port" name="http_port" value="{{.http_port}}" required> <input id="http_port" name="http_port" value="{{.http_port}}" required>
<span class="help">{{.i18n.Tr "install.http_port_helper"}}</span> <span class="help">{{.i18n.Tr "install.http_port_helper"}}</span>
</div> </div>
<div class="inline required field"> <div class="inline required field">
<label for="app_url">{{.i18n.Tr "install.app_url"}}</label> <label for="app_url">{{.i18n.Tr "install.app_url"}}</label>
<input id="app_url" name="app_url" value="{{.app_url}}" placeholder="e.g. https://try.gogs.io" required> <input id="app_url" name="app_url" value="{{.app_url}}" placeholder="e.g. https://try.gogs.io" required>
<span class="help">{{.i18n.Tr "install.app_url_helper"}}</span> <span class="help">{{.i18n.Tr "install.app_url_helper"}}</span>
</div> </div>
<!-- Optional Settings --> <!-- Optional Settings -->
<h4 class="ui dividing header">{{.i18n.Tr "install.optional_title"}}</h4> <h4 class="ui dividing header">{{.i18n.Tr "install.optional_title"}}</h4>
<!-- Email --> <!-- Email -->
<div class="ui accordion optional field"> <div class="ui accordion optional field">
<div class="title {{if .Err_SMTP}}text red{{end}}"> <div class="title {{if .Err_SMTP}}text red{{end}}">
<i class="icon dropdown"></i> <i class="icon dropdown"></i>
{{.i18n.Tr "install.email_title"}} {{.i18n.Tr "install.email_title"}}
</div> </div>
<div class="content"> <div class="content">
<div class="inline field"> <div class="inline field">
<label for="smtp_host">{{.i18n.Tr "install.smtp_host"}}</label> <label for="smtp_host">{{.i18n.Tr "install.smtp_host"}}</label>
<input id="smtp_host" name="smtp_host" value="{{.smtp_host}}"> <input id="smtp_host" name="smtp_host" value="{{.smtp_host}}">
</div> </div>
<div class="inline field {{if .Err_SMTPFrom}}error{{end}}"> <div class="inline field {{if .Err_SMTPFrom}}error{{end}}">
<label for="smtp_from">{{.i18n.Tr "install.smtp_from"}}</label> <label for="smtp_from">{{.i18n.Tr "install.smtp_from"}}</label>
<input id="smtp_from" name="smtp_from" value="{{.smtp_from}}"> <input id="smtp_from" name="smtp_from" value="{{.smtp_from}}">
<span class="help">{{.i18n.Tr "install.smtp_from_helper"}}</span> <span class="help">{{.i18n.Tr "install.smtp_from_helper"}}</span>
</div> </div>
<div class="inline field {{if .Err_SMTPEmail}}error{{end}}"> <div class="inline field {{if .Err_SMTPEmail}}error{{end}}">
<label for="smtp_email">{{.i18n.Tr "install.mailer_user"}}</label> <label for="smtp_email">{{.i18n.Tr "install.mailer_user"}}</label>
<input id="smtp_email" name="smtp_email" value="{{.smtp_email}}"> <input id="smtp_email" name="smtp_email" value="{{.smtp_email}}">
</div> </div>
<div class="inline field"> <div class="inline field">
<label for="smtp_passwd">{{.i18n.Tr "install.mailer_password"}}</label> <label for="smtp_passwd">{{.i18n.Tr "install.mailer_password"}}</label>
<input id="smtp_passwd" name="smtp_passwd" type="password" value="{{.smtp_passwd}}"> <input id="smtp_passwd" name="smtp_passwd" type="password" value="{{.smtp_passwd}}">
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "install.register_confirm"}}</strong></label> <label><strong>{{.i18n.Tr "install.register_confirm"}}</strong></label>
<input name="register_confirm" type="checkbox" {{if .register_confirm}}checked{{end}}> <input name="register_confirm" type="checkbox" {{if .register_confirm}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<label><strong>{{.i18n.Tr "install.mail_notify"}}</strong></label> <label><strong>{{.i18n.Tr "install.mail_notify"}}</strong></label>
<input name="mail_notify" type="checkbox" {{if .mail_notify}}checked{{end}}> <input name="mail_notify" type="checkbox" {{if .mail_notify}}checked{{end}}>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- Server and other services --> <!-- Server and other services -->
<div class="ui accordion optional field"> <div class="ui accordion optional field">
<div class="title {{if .Err_Services}}text red{{end}}"> <div class="title {{if .Err_Services}}text red{{end}}">
<i class="icon dropdown"></i> <i class="icon dropdown"></i>
{{.i18n.Tr "install.server_service_title"}} {{.i18n.Tr "install.server_service_title"}}
</div> </div>
<div class="content"> <div class="content">
<div class="inline field"> <div class="inline field">
<div class="ui checkbox" id="offline-mode"> <div class="ui checkbox" id="offline-mode">
<label class="poping up" data-content="{{.i18n.Tr "install.offline_mode_popup"}}"><strong>{{.i18n.Tr "install.offline_mode"}}</strong></label> <label class="poping up" data-content="{{.i18n.Tr "install.offline_mode_popup"}}"><strong>{{.i18n.Tr "install.offline_mode"}}</strong></label>
<input name="offline_mode" type="checkbox" {{if .offline_mode}}checked{{end}}> <input name="offline_mode" type="checkbox" {{if .offline_mode}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox" id="disable-gravatar"> <div class="ui checkbox" id="disable-gravatar">
<label class="poping up" data-content="{{.i18n.Tr "install.disable_gravatar_popup"}}"><strong>{{.i18n.Tr "install.disable_gravatar"}}</strong></label> <label class="poping up" data-content="{{.i18n.Tr "install.disable_gravatar_popup"}}"><strong>{{.i18n.Tr "install.disable_gravatar"}}</strong></label>
<input name="disable_gravatar" type="checkbox" {{if .disable_gravatar}}checked{{end}}> <input name="disable_gravatar" type="checkbox" {{if .disable_gravatar}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox" id="disable-registration"> <div class="ui checkbox" id="disable-registration">
<label class="poping up" data-content="{{.i18n.Tr "install.disable_registration_popup"}}"><strong>{{.i18n.Tr "install.disable_registration"}}</strong></label> <label class="poping up" data-content="{{.i18n.Tr "install.disable_registration_popup"}}"><strong>{{.i18n.Tr "install.disable_registration"}}</strong></label>
<input name="disable_registration" type="checkbox" {{if .disable_registration}}checked{{end}}> <input name="disable_registration" type="checkbox" {{if .disable_registration}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox" id="enable-captcha"> <div class="ui checkbox" id="enable-captcha">
<label class="poping up" data-content="{{.i18n.Tr "install.enable_captcha_popup"}}"><strong>{{.i18n.Tr "install.enable_captcha"}}</strong></label> <label class="poping up" data-content="{{.i18n.Tr "install.enable_captcha_popup"}}"><strong>{{.i18n.Tr "install.enable_captcha"}}</strong></label>
<input name="enable_captcha" type="checkbox" {{if .enable_captcha}}checked{{end}}> <input name="enable_captcha" type="checkbox" {{if .enable_captcha}}checked{{end}}>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<label class="poping up" data-content="{{.i18n.Tr "install.require_sign_in_view_popup"}}"><strong>{{.i18n.Tr "install.require_sign_in_view"}}</strong></label> <label class="poping up" data-content="{{.i18n.Tr "install.require_sign_in_view_popup"}}"><strong>{{.i18n.Tr "install.require_sign_in_view"}}</strong></label>
<input name="require_sign_in_view" type="checkbox" {{if .require_sign_in_view}}checked{{end}}> <input name="require_sign_in_view" type="checkbox" {{if .require_sign_in_view}}checked{{end}}>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- Admin --> <!-- Admin -->
<div class="ui accordion optional field"> <div class="ui accordion optional field">
<div class="title {{if .Err_Admin}}text red{{end}}"> <div class="title {{if .Err_Admin}}text red{{end}}">
<i class="icon dropdown"></i> <i class="icon dropdown"></i>
{{.i18n.Tr "install.admin_title"}} {{.i18n.Tr "install.admin_title"}}
</div> </div>
<div class="content"> <div class="content">
<p class="center">{{.i18n.Tr "install.admin_setting_desc"}}</p> <p class="center">{{.i18n.Tr "install.admin_setting_desc"}}</p>
<div class="inline field {{if .Err_AdminName}}error{{end}}"> <div class="inline field {{if .Err_AdminName}}error{{end}}">
<label for="admin_name">{{.i18n.Tr "install.admin_name"}}</label> <label for="admin_name">{{.i18n.Tr "install.admin_name"}}</label>
<input id="admin_name" name="admin_name" value="{{.admin_name}}"> <input id="admin_name" name="admin_name" value="{{.admin_name}}">
</div> </div>
<div class="inline field {{if .Err_AdminPasswd}}error{{end}}"> <div class="inline field {{if .Err_AdminPasswd}}error{{end}}">
<label for="admin_passwd">{{.i18n.Tr "install.admin_password"}}</label> <label for="admin_passwd">{{.i18n.Tr "install.admin_password"}}</label>
<input id="admin_passwd" name="admin_passwd" type="password" value="{{.admin_passwd}}"> <input id="admin_passwd" name="admin_passwd" type="password" value="{{.admin_passwd}}">
</div> </div>
<div class="inline field {{if .Err_AdminPasswd}}error{{end}}"> <div class="inline field {{if .Err_AdminPasswd}}error{{end}}">
<label for="admin_confirm_passwd">{{.i18n.Tr "install.confirm_password"}}</label> <label for="admin_confirm_passwd">{{.i18n.Tr "install.confirm_password"}}</label>
<input id="admin_confirm_passwd" name="admin_confirm_passwd" type="password" value="{{.admin_confirm_passwd}}"> <input id="admin_confirm_passwd" name="admin_confirm_passwd" type="password" value="{{.admin_confirm_passwd}}">
</div> </div>
<div class="inline field {{if .Err_AdminEmail}}error{{end}}"> <div class="inline field {{if .Err_AdminEmail}}error{{end}}">
<label for="admin_email">{{.i18n.Tr "install.admin_email"}}</label> <label for="admin_email">{{.i18n.Tr "install.admin_email"}}</label>
<input id="admin_email" name="admin_email" type="email" value="{{.admin_email}}"> <input id="admin_email" name="admin_email" type="email" value="{{.admin_email}}">
</div> </div>
</div> </div>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="inline field"> <div class="inline field">
<label></label> <label></label>
<button class="ui primary button">{{.i18n.Tr "install.install_gogs"}}</button> <button class="ui primary button">{{.i18n.Tr "install.install_gogs"}}</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,15 +1,15 @@
<!DOCTYPE html> <!DOCTYPE html>
<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>{{.User.Name}}, please activate your account</title> <title>{{.User.Name}}, please activate your account</title>
</head> </head>
<body> <body>
<p>Hi <b>{{.User.Name}}</b>, thanks for registering at {{.AppName}}!</p> <p>Hi <b>{{.User.Name}}</b>, thanks for registering at {{.AppName}}!</p>
<p>Please click the following link to verify your e-mail address within <b>{{.ActiveCodeLives}} hours</b>:</p> <p>Please click the following link to verify your e-mail address within <b>{{.ActiveCodeLives}} hours</b>:</p>
<p><a href="{{.AppUrl}}user/activate?code={{.Code}}">{{.AppUrl}}user/activate?code={{.Code}}</a></p> <p><a href="{{.AppUrl}}user/activate?code={{.Code}}">{{.AppUrl}}user/activate?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>© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p> <p>© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p>
</body> </body>
</html> </html>

View File

@ -1,15 +1,15 @@
<!DOCTYPE html> <!DOCTYPE html>
<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>{{.User.Name}}, please verify your e-mail address</title> <title>{{.User.Name}}, please verify your e-mail address</title>
</head> </head>
<body> <body>
<p>Hi <b>{{.User.Name}}</b>,</p> <p>Hi <b>{{.User.Name}}</b>,</p>
<p>Please click the following link to verify your e-mail address within <b>{{.ActiveCodeLives}} hours</b>:</p> <p>Please click the following link to verify your e-mail address within <b>{{.ActiveCodeLives}} hours</b>:</p>
<p><a href="{{.AppUrl}}user/activate_email?code={{.Code}}&email={{.Email}}">{{.AppUrl}}user/activate_email?code={{.Code}}&email={{.Email}}</a></p> <p><a href="{{.AppUrl}}user/activate_email?code={{.Code}}&email={{.Email}}">{{.AppUrl}}user/activate_email?code={{.Code}}&email={{.Email}}</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>© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p> <p>© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p>
</body> </body>
</html> </html>

View File

@ -1,14 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<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>{{.User.Name}}, welcome to {{.AppName}}</title> <title>{{.User.Name}}, welcome to {{.AppName}}</title>
</head> </head>
<body> <body>
<p>Hi <b>{{.User.Name}}</b>, this is your registration confirmation email for {{.AppName}}!</p> <p>Hi <b>{{.User.Name}}</b>, this is your registration confirmation email for {{.AppName}}!</p>
<p>You can now login via username: {{.User.Name}}.</p> <p>You can now login via username: {{.User.Name}}.</p>
<p><a href="{{.AppUrl}}user/login">{{.AppUrl}}user/login</a></p> <p><a href="{{.AppUrl}}user/login">{{.AppUrl}}user/login</a></p>
<p>© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p> <p>© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p>
</body> </body>
</html> </html>

View File

@ -1,15 +1,15 @@
<!DOCTYPE html> <!DOCTYPE html>
<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>{{.User.Name}}, you have requested to reset your password</title> <title>{{.User.Name}}, you have requested to reset your password</title>
</head> </head>
<body> <body>
<p>Hi <b>{{.User.Name}}</b>,</p> <p>Hi <b>{{.User.Name}}</b>,</p>
<p>Please click the following link to verify your e-mail address within <b>{{.ActiveCodeLives}} hours</b>:</p> <p>Please click the following link to verify your e-mail address within <b>{{.ActiveCodeLives}} hours</b>:</p>
<p><a href="{{.AppUrl}}user/reset_password?code={{.Code}}">{{.AppUrl}}user/reset_password?code={{.Code}}</a></p> <p><a href="{{.AppUrl}}user/reset_password?code={{.Code}}">{{.AppUrl}}user/reset_password?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>© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p> <p>© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p>
</body> </body>
</html> </html>

View File

@ -1,16 +1,16 @@
<!DOCTYPE html> <!DOCTYPE html>
<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>{{.Subject}}</title> <title>{{.Subject}}</title>
</head> </head>
<body> <body>
<p>You are now a collaborator of this repository.</p> <p>You are now a collaborator of this repository.</p>
<p> <p>
--- ---
<br> <br>
View it on Gogs: <a href="{{.AppUrl}}{{.RepoLink}}">{{.RepoLink}}</a> View it on Gogs: <a href="{{.AppUrl}}{{.RepoLink}}">{{.RepoLink}}</a>
</p> </p>
</body> </body>
</html> </html>

View File

@ -1,17 +1,17 @@
<!DOCTYPE html> <!DOCTYPE html>
<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>{{.Subject}}</title> <title>{{.Subject}}</title>
</head> </head>
<body> <body>
<p>@{{.ActUserName}} mentioned you:</p> <p>@{{.ActUserName}} mentioned you:</p>
<p>{{.Content | Str2html}}</p> <p>{{.Content | Str2html}}</p>
<p> <p>
--- ---
<br> <br>
<a href="{{.AppUrl}}{{.IssueLink}}">View it on Gogs</a>. <a href="{{.AppUrl}}{{.IssueLink}}">View it on Gogs</a>.
</p> </p>
</body> </body>
</html> </html>

View File

@ -1,30 +1,30 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization new org"> <div class="organization new org">
<div class="ui middle very relaxed page grid"> <div class="ui middle very relaxed page grid">
<div class="column"> <div class="column">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<h3 class="ui top attached header"> <h3 class="ui top attached header">
{{.i18n.Tr "new_org"}} {{.i18n.Tr "new_org"}}
</h3> </h3>
<div class="ui attached segment"> <div class="ui attached segment">
{{template "base/alert" .}} {{template "base/alert" .}}
<div class="inline required field {{if .Err_OrgName}}error{{end}}"> <div class="inline required field {{if .Err_OrgName}}error{{end}}">
<label for="org_name">{{.i18n.Tr "org.org_name_holder"}}</label> <label for="org_name">{{.i18n.Tr "org.org_name_holder"}}</label>
<input id="org_name" name="org_name" value="{{.org_name}}" autofocus required> <input id="org_name" name="org_name" value="{{.org_name}}" autofocus required>
<span class="help">{{.i18n.Tr "org.org_name_helper"}}</span> <span class="help">{{.i18n.Tr "org.org_name_helper"}}</span>
</div> </div>
<div class="inline field"> <div class="inline field">
<label></label> <label></label>
<button class="ui green button"> <button class="ui green button">
{{.i18n.Tr "org.create_org"}} {{.i18n.Tr "org.create_org"}}
</button> </button>
<a class="ui button" href="{{AppSubUrl}}/">{{.i18n.Tr "cancel"}}</a> <a class="ui button" href="{{AppSubUrl}}/">{{.i18n.Tr "cancel"}}</a>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,26 +1,26 @@
{{with .Org}} {{with .Org}}
<div class="ui container"> <div class="ui container">
<div class="ui vertically grid head"> <div class="ui vertically grid head">
<div class="column"> <div class="column">
<div class="ui header"> <div class="ui header">
<img class="ui image" src="{{.AvatarLink}}?s=100"> <img class="ui image" src="{{.AvatarLink}}?s=100">
<span class="text thin grey"><a href="{{.HomeLink}}">{{.DisplayName}}</a></span> <span class="text thin grey"><a href="{{.HomeLink}}">{{.DisplayName}}</a></span>
<div class="ui right"> <div class="ui right">
<div class="ui menu"> <div class="ui menu">
<a class="{{if $.PageIsOrgMembers}}active{{end}} item" href="{{$.OrgLink}}/members"> <a class="{{if $.PageIsOrgMembers}}active{{end}} item" href="{{$.OrgLink}}/members">
<i class="octicon octicon-organization"></i>&nbsp;{{$.i18n.Tr "org.people"}} <i class="octicon octicon-organization"></i>&nbsp;{{$.i18n.Tr "org.people"}}
<div class="floating ui black label">{{.NumMembers}}</div> <div class="floating ui black label">{{.NumMembers}}</div>
</a> </a>
<a class="{{if $.PageIsOrgTeams}}active{{end}} item" href="{{$.OrgLink}}/teams"> <a class="{{if $.PageIsOrgTeams}}active{{end}} item" href="{{$.OrgLink}}/teams">
<i class="octicon octicon-jersey"></i>&nbsp;{{$.i18n.Tr "org.teams"}} <i class="octicon octicon-jersey"></i>&nbsp;{{$.i18n.Tr "org.teams"}}
<div class="floating ui black label">{{.NumTeams}}</div> <div class="floating ui black label">{{.NumTeams}}</div>
</a> </a>
</div> </div>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="ui divider"></div>
<div class="ui divider"></div> {{end}}
{{end}}

View File

@ -1,85 +1,85 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization profile"> <div class="organization profile">
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
<div class="ui sixteen wide column"> <div class="ui sixteen wide column">
<img class="ui left" id="org-avatar" src="{{.Org.AvatarLink}}?s=140"/> <img class="ui left" id="org-avatar" src="{{.Org.AvatarLink}}?s=140"/>
<div id="org-info"> <div id="org-info">
<div class="ui header"> <div class="ui header">
{{.Org.FullName}} {{.Org.FullName}}
{{if .IsOrganizationOwner}}<a class="text grey" href="{{.OrgLink}}/settings"><span class="icon octicon octicon-gear"></span></a>{{end}} {{if .IsOrganizationOwner}}<a class="text grey" href="{{.OrgLink}}/settings"><span class="icon octicon octicon-gear"></span></a>{{end}}
</div> </div>
{{if .Org.Description}}<p class="desc">{{.Org.Description}}</p>{{end}} {{if .Org.Description}}<p class="desc">{{.Org.Description}}</p>{{end}}
<div class="text grey meta"> <div class="text grey meta">
{{if .Org.Location}}<div class="item"><span class="icon octicon octicon-location"></span> <span>{{.Org.Location}}</span></div>{{end}} {{if .Org.Location}}<div class="item"><span class="icon octicon octicon-location"></span> <span>{{.Org.Location}}</span></div>{{end}}
{{if .Org.Website}}<div class="item"><span class="icon octicon octicon-link"></span> <a target="_blank" href="{{.Org.Website}}">{{.Org.Website}}</a></div>{{end}} {{if .Org.Website}}<div class="item"><span class="icon octicon octicon-link"></span> <a target="_blank" href="{{.Org.Website}}">{{.Org.Website}}</a></div>{{end}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
<div class="ui eleven wide column"> <div class="ui eleven wide column">
{{if .IsOrganizationOwner}} {{if .IsOrganizationOwner}}
<div class="text right"> <div class="text right">
<a class="ui green button" href="{{AppSubUrl}}/repo/create?org={{.Org.Id}}"><i class="octicon octicon-repo-create"></i> {{.i18n.Tr "new_repo"}}</a> <a class="ui green button" href="{{AppSubUrl}}/repo/create?org={{.Org.Id}}"><i class="octicon octicon-repo-create"></i> {{.i18n.Tr "new_repo"}}</a>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
{{end}} {{end}}
{{template "explore/repo_list" .}} {{template "explore/repo_list" .}}
</div> </div>
<div class="ui five wide column"> <div class="ui five wide column">
<h4 class="ui top attached header"> <h4 class="ui top attached header">
<strong>{{.i18n.Tr "org.people"}}</strong> <strong>{{.i18n.Tr "org.people"}}</strong>
{{if .IsOrganizationMember}} {{if .IsOrganizationMember}}
<div class="ui right"> <div class="ui right">
<a class="text grey" href="{{.OrgLink}}/members"><strong>{{.Org.NumMembers}}</strong><span class="octicon octicon-chevron-right"></span></a> <a class="text grey" href="{{.OrgLink}}/members"><strong>{{.Org.NumMembers}}</strong><span class="octicon octicon-chevron-right"></span></a>
</div> </div>
{{end}} {{end}}
</h4> </h4>
<div class="ui attached segment members"> <div class="ui attached segment members">
{{$isMember := .IsOrganizationMember}} {{$isMember := .IsOrganizationMember}}
{{range .Members}} {{range .Members}}
{{if or $isMember (.IsPublicMember $.Org.Id)}} {{if or $isMember (.IsPublicMember $.Org.Id)}}
<a href="{{.HomeLink}}" title="{{.Name}}"><img class="ui avatar" src="{{.AvatarLink}}"></a> <a href="{{.HomeLink}}" title="{{.Name}}"><img class="ui avatar" src="{{.AvatarLink}}"></a>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
{{if .IsOrganizationOwner}} {{if .IsOrganizationOwner}}
<div class="ui bottom attached segment"> <div class="ui bottom attached segment">
<a class="ui blue small button" href="{{.OrgLink}}/invitations/new">{{.i18n.Tr "org.invite_someone"}}</a> <a class="ui blue small button" href="{{.OrgLink}}/invitations/new">{{.i18n.Tr "org.invite_someone"}}</a>
</div> </div>
{{end}} {{end}}
{{if .IsOrganizationMember}} {{if .IsOrganizationMember}}
<div class="ui top attached header"> <div class="ui top attached header">
<strong>{{.i18n.Tr "org.teams"}}</strong> <strong>{{.i18n.Tr "org.teams"}}</strong>
<div class="ui right"> <div class="ui right">
<a class="text grey" href="{{.OrgLink}}/teams"><strong>{{.Org.NumTeams}}</strong><span class="octicon octicon-chevron-right"></span></a> <a class="text grey" href="{{.OrgLink}}/teams"><strong>{{.Org.NumTeams}}</strong><span class="octicon octicon-chevron-right"></span></a>
</div> </div>
</div> </div>
<div class="ui attached table segment teams"> <div class="ui attached table segment teams">
{{range .Teams}} {{range .Teams}}
<div class="item"> <div class="item">
<a href="{{$.OrgLink}}/teams/{{.LowerName}}"><strong class="team-name">{{.Name}}</strong></a> <a href="{{$.OrgLink}}/teams/{{.LowerName}}"><strong class="team-name">{{.Name}}</strong></a>
<p class="text grey">{{.NumMembers}} {{$.i18n.Tr "org.lower_members"}} · {{.NumRepos}} {{$.i18n.Tr "org.lower_repositories"}}</p> <p class="text grey">{{.NumMembers}} {{$.i18n.Tr "org.lower_members"}} · {{.NumRepos}} {{$.i18n.Tr "org.lower_repositories"}}</p>
</div> </div>
{{end}} {{end}}
</div> </div>
{{if .IsOrganizationOwner}} {{if .IsOrganizationOwner}}
<div class="ui bottom attached segment"> <div class="ui bottom attached segment">
<a class="ui blue small button" href="{{.OrgLink}}/teams/new">{{.i18n.Tr "org.create_new_team"}}</a> <a class="ui blue small button" href="{{.OrgLink}}/teams/new">{{.i18n.Tr "org.create_new_team"}}</a>
</div> </div>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,23 +1,23 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization invite"> <div class="organization invite">
{{template "org/header" .}} {{template "org/header" .}}
<div class="ui container"> <div class="ui container">
<div id="invite-box"> <div id="invite-box">
{{template "base/alert" .}} {{template "base/alert" .}}
<h2>{{.i18n.Tr "org.members.invite_desc" .Org.DisplayName}}</h2> <h2>{{.i18n.Tr "org.members.invite_desc" .Org.DisplayName}}</h2>
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<div class="inline field ui left"> <div class="inline field ui left">
<div id="search-user-box"> <div id="search-user-box">
<div class="ui input"> <div class="ui input">
<input class="prompt" name="uname" placeholder="{{.i18n.Tr "repo.settings.search_user_placeholder"}}" autocomplete="off" autofocus required> <input class="prompt" name="uname" placeholder="{{.i18n.Tr "repo.settings.search_user_placeholder"}}" autocomplete="off" autofocus required>
</div> </div>
<div class="ui segment results hide"></div> <div class="ui segment results hide"></div>
</div> </div>
</div> </div>
<button class="ui blue button">{{.i18n.Tr "org.members.invite_now"}}</button> <button class="ui blue button">{{.i18n.Tr "org.members.invite_now"}}</button>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,60 +1,60 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization members"> <div class="organization members">
{{template "org/header" .}} {{template "org/header" .}}
<div class="ui container"> <div class="ui container">
{{template "base/alert" .}} {{template "base/alert" .}}
{{if .IsOrganizationOwner}} {{if .IsOrganizationOwner}}
<div class="text right"> <div class="text right">
<a class="ui blue button" href="{{.OrgLink}}/invitations/new"><i class="octicon octicon-repo-create"></i> {{.i18n.Tr "org.invite_someone"}}</a> <a class="ui blue button" href="{{.OrgLink}}/invitations/new"><i class="octicon octicon-repo-create"></i> {{.i18n.Tr "org.invite_someone"}}</a>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
{{end}} {{end}}
<div class="list"> <div class="list">
{{range .Members}} {{range .Members}}
<div class="item ui grid"> <div class="item ui grid">
<div class="ui one wide column"> <div class="ui one wide column">
<img class="ui avatar" src="{{.AvatarLink}}?s=48"> <img class="ui avatar" src="{{.AvatarLink}}?s=48">
</div>
<div class="ui three wide column">
<div class="meta"><a href="{{.HomeLink}}">{{.Name}}</a></div>
<div class="meta">{{.FullName}}</div>
</div>
<div class="ui five wide column center">
<div class="meta">
{{$.i18n.Tr "org.members.membership_visibility"}}
</div> </div>
<div class="meta"> <div class="ui three wide column">
{{ $isPublic := .IsPublicMember $.Org.Id}} <div class="meta"><a href="{{.HomeLink}}">{{.Name}}</a></div>
{{if $isPublic}} <div class="meta">{{.FullName}}</div>
<strong>{{$.i18n.Tr "org.members.public"}}</strong> </div>
{{if or (eq $.SignedUser.Id .Id) $.IsOrganizationOwner}}(<a href="{{$.OrgLink}}/members/action/private?uid={{.Id}}">{{$.i18n.Tr "org.members.public_helper"}}</a>){{end}} <div class="ui five wide column center">
{{else}} <div class="meta">
<strong>{{$.i18n.Tr "org.members.private"}}</strong> {{$.i18n.Tr "org.members.membership_visibility"}}
{{if or (eq $.SignedUser.Id .Id) $.IsOrganizationOwner}}(<a href="{{$.OrgLink}}/members/action/public?uid={{.Id}}">{{$.i18n.Tr "org.members.private_helper"}}</a>){{end}} </div>
{{end}} <div class="meta">
{{ $isPublic := .IsPublicMember $.Org.Id}}
{{if $isPublic}}
<strong>{{$.i18n.Tr "org.members.public"}}</strong>
{{if or (eq $.SignedUser.Id .Id) $.IsOrganizationOwner}}(<a href="{{$.OrgLink}}/members/action/private?uid={{.Id}}">{{$.i18n.Tr "org.members.public_helper"}}</a>){{end}}
{{else}}
<strong>{{$.i18n.Tr "org.members.private"}}</strong>
{{if or (eq $.SignedUser.Id .Id) $.IsOrganizationOwner}}(<a href="{{$.OrgLink}}/members/action/public?uid={{.Id}}">{{$.i18n.Tr "org.members.private_helper"}}</a>){{end}}
{{end}}
</div>
</div>
<div class="ui three wide column center">
<div class="meta">
{{$.i18n.Tr "org.members.member_role"}}
</div>
<div class="meta">
<strong>{{if .IsUserOrgOwner $.Org.Id}}<span class="octicon octicon-shield"></span> {{$.i18n.Tr "org.members.owner"}}{{else}}{{$.i18n.Tr "org.members.member"}}{{end}}</strong>
</div>
</div>
<div class="ui four wide column">
<div class="text right">
{{if eq $.SignedUser.Id .Id}}
<a class="ui red small button" href="{{$.OrgLink}}/members/action/leave?uid={{.Id}}">{{$.i18n.Tr "org.members.leave"}}</a>
{{else if $.IsOrganizationOwner}}
<a class="ui red small button" href="{{$.OrgLink}}/members/action/remove?uid={{.Id}}">{{$.i18n.Tr "org.members.remove"}}</a>
{{end}}
</div>
</div> </div>
</div> </div>
<div class="ui three wide column center">
<div class="meta">
{{$.i18n.Tr "org.members.member_role"}}
</div>
<div class="meta">
<strong>{{if .IsUserOrgOwner $.Org.Id}}<span class="octicon octicon-shield"></span> {{$.i18n.Tr "org.members.owner"}}{{else}}{{$.i18n.Tr "org.members.member"}}{{end}}</strong>
</div>
</div>
<div class="ui four wide column">
<div class="text right">
{{if eq $.SignedUser.Id .Id}}
<a class="ui red small button" href="{{$.OrgLink}}/members/action/leave?uid={{.Id}}">{{$.i18n.Tr "org.members.leave"}}</a>
{{else if $.IsOrganizationOwner}}
<a class="ui red small button" href="{{$.OrgLink}}/members/action/remove?uid={{.Id}}">{{$.i18n.Tr "org.members.remove"}}</a>
{{end}}
</div>
</div>
</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,43 +1,43 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization settings delete"> <div class="organization settings delete">
{{template "org/header" .}} {{template "org/header" .}}
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "org/settings/navbar" .}} {{template "org/settings/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached warning header"> <h4 class="ui top attached warning header">
{{.i18n.Tr "org.settings.delete_account"}} {{.i18n.Tr "org.settings.delete_account"}}
</h4> </h4>
<div class="ui attached warning segment"> <div class="ui attached warning segment">
<div class="ui red message"> <div class="ui red message">
<p class="text left"><i class="octicon octicon-alert"></i> {{.i18n.Tr "org.settings.delete_prompt" | Str2html}}</p> <p class="text left"><i class="octicon octicon-alert"></i> {{.i18n.Tr "org.settings.delete_prompt" | Str2html}}</p>
</div> </div>
<form class="ui form" id="delete-form" action="{{.Link}}" method="post"> <form class="ui form" id="delete-form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<input class="fake" type="password"> <input class="fake" type="password">
<div class="inline required field {{if .Err_Password}}error{{end}}"> <div class="inline required 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" autofocus required> <input id="password" name="password" type="password" autofocus required>
</div> </div>
<div class="ui red button delete-button" data-type="form" data-form="#delete-form"> <div class="ui red button delete-button" data-type="form" data-form="#delete-form">
{{.i18n.Tr "org.settings.confirm_delete_account"}} {{.i18n.Tr "org.settings.confirm_delete_account"}}
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="ui small basic delete modal"> <div class="ui small basic delete modal">
<div class="ui icon header"> <div class="ui icon header">
<i class="trash icon"></i> <i class="trash icon"></i>
{{.i18n.Tr "org.settings.delete_org_title"}} {{.i18n.Tr "org.settings.delete_org_title"}}
</div> </div>
<div class="content"> <div class="content">
<p>{{.i18n.Tr "org.settings.delete_org_desc"}}</p> <p>{{.i18n.Tr "org.settings.delete_org_desc"}}</p>
</div> </div>
{{template "base/delete_modal_actions" .}} {{template "base/delete_modal_actions" .}}
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,29 +1,29 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization settings new webhook"> <div class="organization settings new webhook">
{{template "org/header" .}} {{template "org/header" .}}
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "org/settings/navbar" .}} {{template "org/settings/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{if .PageIsSettingsHooksNew}}{{.i18n.Tr "repo.settings.add_webhook"}}{{else}}{{.i18n.Tr "repo.settings.update_webhook"}}{{end}} {{if .PageIsSettingsHooksNew}}{{.i18n.Tr "repo.settings.add_webhook"}}{{else}}{{.i18n.Tr "repo.settings.update_webhook"}}{{end}}
<div class="ui right"> <div class="ui right">
{{if eq .HookType "gogs"}} {{if eq .HookType "gogs"}}
<img class="img-13" src="{{AppSubUrl}}/img/favicon.png"> <img class="img-13" src="{{AppSubUrl}}/img/favicon.png">
{{else if eq .HookType "slack"}} {{else if eq .HookType "slack"}}
<img class="img-13" src="{{AppSubUrl}}/img/slack.png"> <img class="img-13" src="{{AppSubUrl}}/img/slack.png">
{{end}} {{end}}
</div> </div>
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
{{template "repo/settings/hook_gogs" .}} {{template "repo/settings/hook_gogs" .}}
{{template "repo/settings/hook_slack" .}} {{template "repo/settings/hook_slack" .}}
</div> </div>
{{template "repo/settings/hook_history" .}} {{template "repo/settings/hook_history" .}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,11 +1,11 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization settings webhooks"> <div class="organization settings webhooks">
{{template "org/header" .}} {{template "org/header" .}}
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "org/settings/navbar" .}} {{template "org/settings/navbar" .}}
{{template "repo/settings/hook_list" .}} {{template "repo/settings/hook_list" .}}
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,14 +1,14 @@
<div class="four wide column"> <div class="four wide column">
<div class="ui vertical menu"> <div class="ui vertical menu">
<div class="header item">{{.i18n.Tr "org.settings"}}</div> <div class="header item">{{.i18n.Tr "org.settings"}}</div>
<a class="{{if .PageIsSettingsOptions}}active{{end}} item" href="{{.OrgLink}}/settings"> <a class="{{if .PageIsSettingsOptions}}active{{end}} item" href="{{.OrgLink}}/settings">
{{.i18n.Tr "org.settings.options"}} {{.i18n.Tr "org.settings.options"}}
</a> </a>
<a class="{{if .PageIsSettingsHooks}}active{{end}} item" href="{{.OrgLink}}/settings/hooks"> <a class="{{if .PageIsSettingsHooks}}active{{end}} item" href="{{.OrgLink}}/settings/hooks">
{{.i18n.Tr "repo.settings.hooks"}} {{.i18n.Tr "repo.settings.hooks"}}
</a> </a>
<a class="{{if .PageIsSettingsDelete}}active{{end}} item" href="{{.OrgLink}}/settings/delete"> <a class="{{if .PageIsSettingsDelete}}active{{end}} item" href="{{.OrgLink}}/settings/delete">
{{.i18n.Tr "org.settings.delete"}} {{.i18n.Tr "org.settings.delete"}}
</a> </a>
</div> </div>
</div> </div>

View File

@ -1,59 +1,59 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization settings options"> <div class="organization settings options">
{{template "org/header" .}} {{template "org/header" .}}
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
{{template "org/settings/navbar" .}} {{template "org/settings/navbar" .}}
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "org.settings.options"}} {{.i18n.Tr "org.settings.options"}}
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<div class="required field {{if .Err_Name}}error{{end}}"> <div class="required field {{if .Err_Name}}error{{end}}">
<label for="org_name">{{.i18n.Tr "org.org_name_holder"}}<span class="text red hide" id="org-name-change-prompt"> {{.i18n.Tr "org.settings.change_orgname_prompt"}}</span></label> <label for="org_name">{{.i18n.Tr "org.org_name_holder"}}<span class="text red hide" id="org-name-change-prompt"> {{.i18n.Tr "org.settings.change_orgname_prompt"}}</span></label>
<input id="org_name" name="name" value="{{.Org.Name}}" data-org-name="{{.Org.Name}}" autofocus required> <input id="org_name" name="name" value="{{.Org.Name}}" data-org-name="{{.Org.Name}}" autofocus required>
</div> </div>
<div class="field {{if .Err_FullName}}error{{end}}"> <div class="field {{if .Err_FullName}}error{{end}}">
<label for="full_name">{{.i18n.Tr "org.org_full_name_holder"}}</label> <label for="full_name">{{.i18n.Tr "org.org_full_name_holder"}}</label>
<input id="full_name" name="full_name" value="{{.Org.FullName}}"> <input id="full_name" name="full_name" value="{{.Org.FullName}}">
</div> </div>
<div class="field {{if .Err_Description}}error{{end}}"> <div class="field {{if .Err_Description}}error{{end}}">
<label for="description">{{$.i18n.Tr "org.org_desc"}}</label> <label for="description">{{$.i18n.Tr "org.org_desc"}}</label>
<textarea id="description" name="description" rows="2">{{.Org.Description}}</textarea> <textarea id="description" name="description" rows="2">{{.Org.Description}}</textarea>
</div> </div>
<div class="field {{if .Err_Website}}error{{end}}"> <div class="field {{if .Err_Website}}error{{end}}">
<label for="website">{{.i18n.Tr "org.settings.website"}}</label> <label for="website">{{.i18n.Tr "org.settings.website"}}</label>
<input id="website" name="website" type="url" value="{{.Org.Website}}"> <input id="website" name="website" type="url" value="{{.Org.Website}}">
</div> </div>
<div class="field"> <div class="field">
<label for="location">{{.i18n.Tr "org.settings.location"}}</label> <label for="location">{{.i18n.Tr "org.settings.location"}}</label>
<input id="location" name="location" value="{{.Org.Location}}"> <input id="location" name="location" value="{{.Org.Location}}">
</div> </div>
<div class="field"> <div class="field">
<button class="ui green button">{{$.i18n.Tr "org.settings.update_settings"}}</button> <button class="ui green button">{{$.i18n.Tr "org.settings.update_settings"}}</button>
</div> </div>
</form> </form>
<div class="ui divider"></div> <div class="ui divider"></div>
<form class="ui form" action="{{.Link}}/avatar" method="post" enctype="multipart/form-data"> <form class="ui form" action="{{.Link}}/avatar" method="post" enctype="multipart/form-data">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<div class="inline field"> <div class="inline field">
<label for="avatar">{{.i18n.Tr "settings.choose_new_avatar"}}</label> <label for="avatar">{{.i18n.Tr "settings.choose_new_avatar"}}</label>
<input name="avatar" type="file" > <input name="avatar" type="file" >
</div> </div>
<div class="field"> <div class="field">
<button class="ui green button">{{$.i18n.Tr "settings.update_avatar"}}</button> <button class="ui green button">{{$.i18n.Tr "settings.update_avatar"}}</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,46 +1,46 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization teams"> <div class="organization teams">
{{template "org/header" .}} {{template "org/header" .}}
<div class="ui container"> <div class="ui container">
{{template "base/alert" .}} {{template "base/alert" .}}
<div class="ui grid"> <div class="ui grid">
{{template "org/team/sidebar" .}} {{template "org/team/sidebar" .}}
<div class="ui ten wide column"> <div class="ui ten wide column">
<div class="ui top attached header"> <div class="ui top attached header">
{{.i18n.Tr "org.teams.members"}} {{.i18n.Tr "org.teams.members"}}
</div> </div>
<div class="ui attached table segment members"> <div class="ui attached table segment members">
{{range .Team.Members}} {{range .Team.Members}}
<div class="item"> <div class="item">
{{if $.IsOrganizationOwner}} {{if $.IsOrganizationOwner}}
<a class="ui red small button right" href="{{$.OrgLink}}/teams/{{$.Team.LowerName}}/action/remove?uid={{.Id}}">{{$.i18n.Tr "org.members.remove"}}</a> <a class="ui red small button right" href="{{$.OrgLink}}/teams/{{$.Team.LowerName}}/action/remove?uid={{.Id}}">{{$.i18n.Tr "org.members.remove"}}</a>
{{end}} {{end}}
<a href="{{.HomeLink}}"> <a href="{{.HomeLink}}">
<img class="ui avatar image" src="{{.AvatarLink}}"> <img class="ui avatar image" src="{{.AvatarLink}}">
{{.DisplayName}} {{.DisplayName}}
</a> </a>
</div> </div>
{{end}} {{end}}
</div>
{{if .IsOrganizationOwner}}
<div class="ui bottom attached segment">
<form class="ui form" id="add-member-form" action="{{$.OrgLink}}/teams/{{$.Team.LowerName}}/action/add" method="post">
{{.CsrfTokenHtml}}
<input type="hidden" name="uid" value="{{.SignedUser.Id}}">
<div class="inline field ui left">
<div id="search-user-box">
<div class="ui input">
<input class="prompt" name="uname" placeholder="{{.i18n.Tr "repo.settings.search_user_placeholder"}}" autocomplete="off" required>
</div>
<div class="ui segment results hide"></div>
</div>
</div>
<button class="ui green button">{{.i18n.Tr "org.teams.add_team_member"}}</button>
</form>
</div> </div>
{{if .IsOrganizationOwner}}
<div class="ui bottom attached segment">
<form class="ui form" id="add-member-form" action="{{$.OrgLink}}/teams/{{$.Team.LowerName}}/action/add" method="post">
{{.CsrfTokenHtml}}
<input type="hidden" name="uid" value="{{.SignedUser.Id}}">
<div class="inline field ui left">
<div id="search-user-box">
<div class="ui input">
<input class="prompt" name="uname" placeholder="{{.i18n.Tr "repo.settings.search_user_placeholder"}}" autocomplete="off" required>
</div>
<div class="ui segment results hide"></div>
</div>
</div>
<button class="ui green button">{{.i18n.Tr "org.teams.add_team_member"}}</button>
</form>
</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,82 +1,82 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization new team"> <div class="organization new team">
{{template "org/header" .}} {{template "org/header" .}}
<div class="ui middle very relaxed page grid"> <div class="ui middle very relaxed page grid">
<div class="column"> <div class="column">
<form class="ui form" action="{{if .PageIsOrgTeamsNew}}{{.OrgLink}}/teams/new{{else}}{{.OrgLink}}/teams/{{.Team.LowerName}}/edit{{end}}" data-delete-url="{{.OrgLink}}/teams/{{.Team.LowerName}}/delete" method="post"> <form class="ui form" action="{{if .PageIsOrgTeamsNew}}{{.OrgLink}}/teams/new{{else}}{{.OrgLink}}/teams/{{.Team.LowerName}}/edit{{end}}" data-delete-url="{{.OrgLink}}/teams/{{.Team.LowerName}}/delete" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<h3 class="ui top attached header"> <h3 class="ui top attached header">
{{if .PageIsOrgTeamsNew}}{{.i18n.Tr "org.create_new_team"}}{{else}}{{.i18n.Tr "org.teams.settings"}}{{end}} {{if .PageIsOrgTeamsNew}}{{.i18n.Tr "org.create_new_team"}}{{else}}{{.i18n.Tr "org.teams.settings"}}{{end}}
</h3> </h3>
<div class="ui attached segment"> <div class="ui attached segment">
{{template "base/alert" .}} {{template "base/alert" .}}
<div class="required field {{if .Err_TeamName}}error{{end}}"> <div class="required field {{if .Err_TeamName}}error{{end}}">
<label for="team_name">{{.i18n.Tr "org.team_name"}}</label> <label for="team_name">{{.i18n.Tr "org.team_name"}}</label>
{{if eq .Team.LowerName "owners"}} {{if eq .Team.LowerName "owners"}}
<input type="hidden" name="team_name" value="{{.team_name}}"> <input type="hidden" name="team_name" value="{{.team_name}}">
{{end}} {{end}}
<input id="team_name" name="team_name" value="{{.team_name}}" required {{if eq .Team.LowerName "owners"}}disabled{{end}} autofocus> <input id="team_name" name="team_name" value="{{.team_name}}" required {{if eq .Team.LowerName "owners"}}disabled{{end}} autofocus>
<span class="help">{{.i18n.Tr "org.team_name_helper"}}</span> <span class="help">{{.i18n.Tr "org.team_name_helper"}}</span>
</div> </div>
<div class="field {{if .Err_Description}}error{{end}}"> <div class="field {{if .Err_Description}}error{{end}}">
<label for="desc">{{.i18n.Tr "org.team_desc"}}</label> <label for="desc">{{.i18n.Tr "org.team_desc"}}</label>
<input id="desc" name="desc" value="{{.desc}}"> <input id="desc" name="desc" value="{{.desc}}">
<span class="help">{{.i18n.Tr "org.team_desc_helper"}}</span> <span class="help">{{.i18n.Tr "org.team_desc_helper"}}</span>
</div> </div>
{{if not (eq .Team.LowerName "owners")}} {{if not (eq .Team.LowerName "owners")}}
<div class="grouped field"> <div class="grouped field">
<label>{{.i18n.Tr "org.team_permission_desc"}}</label> <label>{{.i18n.Tr "org.team_permission_desc"}}</label>
<br> <br>
<div class="field"> <div class="field">
<div class="ui radio checkbox"> <div class="ui radio checkbox">
<input type="radio" name="permission" value="read" {{if or .PageIsOrgTeamsNew (eq .Team.Authorize 1)}}checked{{end}}> <input type="radio" name="permission" value="read" {{if or .PageIsOrgTeamsNew (eq .Team.Authorize 1)}}checked{{end}}>
<label>{{.i18n.Tr "org.teams.read_access"}}</label> <label>{{.i18n.Tr "org.teams.read_access"}}</label>
<span class="help">{{.i18n.Tr "org.teams.read_access_helper"}}</span> <span class="help">{{.i18n.Tr "org.teams.read_access_helper"}}</span>
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<div class="ui radio checkbox"> <div class="ui radio checkbox">
<input type="radio" name="permission" value="write" {{if eq .Team.Authorize 2}}checked{{end}}> <input type="radio" name="permission" value="write" {{if eq .Team.Authorize 2}}checked{{end}}>
<label>{{.i18n.Tr "org.teams.write_access"}}</label> <label>{{.i18n.Tr "org.teams.write_access"}}</label>
<span class="help">{{.i18n.Tr "org.teams.write_access_helper"}}</span> <span class="help">{{.i18n.Tr "org.teams.write_access_helper"}}</span>
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<div class="ui radio checkbox"> <div class="ui radio checkbox">
<input type="radio" name="permission" value="admin" {{if eq .Team.Authorize 3}}checked{{end}}> <input type="radio" name="permission" value="admin" {{if eq .Team.Authorize 3}}checked{{end}}>
<label>{{.i18n.Tr "org.teams.admin_access"}}</label> <label>{{.i18n.Tr "org.teams.admin_access"}}</label>
<span class="help">{{.i18n.Tr "org.teams.admin_access_helper"}}</span> <span class="help">{{.i18n.Tr "org.teams.admin_access_helper"}}</span>
</div> </div>
</div> </div>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
{{end}} {{end}}
<div class="field"> <div class="field">
{{if .PageIsOrgTeamsNew}} {{if .PageIsOrgTeamsNew}}
<button class="ui green button">{{.i18n.Tr "org.create_new_team"}}</button> <button class="ui green button">{{.i18n.Tr "org.create_new_team"}}</button>
<a class="ui button" href="{{.OrgLink}}/teams">{{.i18n.Tr "cancel"}}</a> <a class="ui button" href="{{.OrgLink}}/teams">{{.i18n.Tr "cancel"}}</a>
{{else}} {{else}}
<button class="ui green button">{{.i18n.Tr "org.teams.update_settings"}}</button> <button class="ui green button">{{.i18n.Tr "org.teams.update_settings"}}</button>
{{if not (eq .Team.LowerName "owners")}} {{if not (eq .Team.LowerName "owners")}}
<button class="ui red button delete-button" data-url="{{.OrgLink}}/teams/{{.team_name}}/delete">{{.i18n.Tr "org.teams.delete_team"}}</button> <button class="ui red button delete-button" data-url="{{.OrgLink}}/teams/{{.team_name}}/delete">{{.i18n.Tr "org.teams.delete_team"}}</button>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
<div class="ui small basic delete modal"> <div class="ui small basic delete modal">
<div class="ui icon header"> <div class="ui icon header">
<i class="trash icon"></i> <i class="trash icon"></i>
{{.i18n.Tr "org.teams.delete_team_title"}} {{.i18n.Tr "org.teams.delete_team_title"}}
</div> </div>
<div class="content"> <div class="content">
<p>{{.i18n.Tr "org.teams.delete_team_desc"}}</p> <p>{{.i18n.Tr "org.teams.delete_team_desc"}}</p>
</div> </div>
{{template "base/delete_modal_actions" .}} {{template "base/delete_modal_actions" .}}
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,9 +1,9 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization teams"> <div class="organization teams">
{{template "org/header" .}} {{template "org/header" .}}
<div class="ui container"> <div class="ui container">
{{template "base/alert" .}} {{template "base/alert" .}}
<div class="ui grid"> <div class="ui grid">
{{template "org/team/sidebar" .}} {{template "org/team/sidebar" .}}
<div class="ui ten wide column"> <div class="ui ten wide column">
<div class="ui top attached header"> <div class="ui top attached header">
@ -11,36 +11,36 @@
</div> </div>
<div class="ui attached table segment repositories"> <div class="ui attached table segment repositories">
{{$canAddRemove := and $.IsOrganizationOwner (not (eq $.Team.LowerName "owners"))}} {{$canAddRemove := and $.IsOrganizationOwner (not (eq $.Team.LowerName "owners"))}}
{{range .Team.Repos}} {{range .Team.Repos}}
<div class="item"> <div class="item">
{{if $canAddRemove}} {{if $canAddRemove}}
<a class="ui red small button right" href="{{$.OrgLink}}/teams/{{$.Team.LowerName}}/action/repo/remove?repoid={{.ID}}">{{$.i18n.Tr "org.teams.remove_repo"}}</a> <a class="ui red small button right" href="{{$.OrgLink}}/teams/{{$.Team.LowerName}}/action/repo/remove?repoid={{.ID}}">{{$.i18n.Tr "org.teams.remove_repo"}}</a>
{{end}} {{end}}
<a class="member" href="{{AppSubUrl}}/{{$.Org.Name}}/{{.Name}}"> <a class="member" href="{{AppSubUrl}}/{{$.Org.Name}}/{{.Name}}">
<i class="icon octicon octicon-{{if .IsPrivate}}lock{{else if .IsFork}}repo-forked{{else if .IsMirror}}repo-clone{{else}}repo{{end}}"></i> <i class="icon octicon octicon-{{if .IsPrivate}}lock{{else if .IsFork}}repo-forked{{else if .IsMirror}}repo-clone{{else}}repo{{end}}"></i>
<strong>{{$.Org.Name}}/{{.Name}}</strong> <strong>{{$.Org.Name}}/{{.Name}}</strong>
</a> </a>
</div> </div>
{{end}} {{end}}
</div> </div>
{{if $canAddRemove}} {{if $canAddRemove}}
<div class="ui bottom attached segment"> <div class="ui bottom attached segment">
<form class="ui form" id="add-repo-form" action="{{$.OrgLink}}/teams/{{$.Team.LowerName}}/action/repo/add" method="post"> <form class="ui form" id="add-repo-form" action="{{$.OrgLink}}/teams/{{$.Team.LowerName}}/action/repo/add" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<div class="inline field ui left"> <div class="inline field ui left">
<div id="search-repo-box" data-uid="{{.Org.Id}}"> <div id="search-repo-box" data-uid="{{.Org.Id}}">
<div class="ui input"> <div class="ui input">
<input class="prompt" name="repo_name" placeholder="{{.i18n.Tr "org.teams.search_repo_placeholder"}}" autocomplete="off" required> <input class="prompt" name="repo_name" placeholder="{{.i18n.Tr "org.teams.search_repo_placeholder"}}" autocomplete="off" required>
</div> </div>
<div class="ui segment results hide"></div> <div class="ui segment results hide"></div>
</div> </div>
</div> </div>
<button class="ui green button">{{.i18n.Tr "org.teams.add_team_repository"}}</button> <button class="ui green button">{{.i18n.Tr "org.teams.add_team_repository"}}</button>
</form> </form>
</div> </div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,41 +1,41 @@
<div class="ui six wide column"> <div class="ui six wide column">
<h4 class="ui top attached header"> <h4 class="ui top attached header">
<strong>{{.Team.Name}}</strong> <strong>{{.Team.Name}}</strong>
<div class="ui right"> <div class="ui right">
{{if .Team.IsMember $.SignedUser.Id}} {{if .Team.IsMember $.SignedUser.Id}}
<a class="ui red tiny button" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/action/leave?uid={{$.SignedUser.Id}}&page=team">{{$.i18n.Tr "org.teams.leave"}}</a> <a class="ui red tiny button" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/action/leave?uid={{$.SignedUser.Id}}&page=team">{{$.i18n.Tr "org.teams.leave"}}</a>
{{else if .IsOrganizationOwner}} {{else if .IsOrganizationOwner}}
<a class="ui blue tiny button" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/action/join?uid={{$.SignedUser.Id}}&page=team">{{$.i18n.Tr "org.teams.join"}}</a> <a class="ui blue tiny button" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/action/join?uid={{$.SignedUser.Id}}&page=team">{{$.i18n.Tr "org.teams.join"}}</a>
{{end}} {{end}}
</div> </div>
</h4> </h4>
<div class="ui attached table segment detail"> <div class="ui attached table segment detail">
<div class="item"> <div class="item">
{{if .Team.Description}} {{if .Team.Description}}
{{.Team.Description}} {{.Team.Description}}
{{else}} {{else}}
<span class="text grey italic">{{.i18n.Tr "org.teams.no_desc"}}</span> <span class="text grey italic">{{.i18n.Tr "org.teams.no_desc"}}</span>
{{end}} {{end}}
</div> </div>
<div class="item"> <div class="item">
<a href="{{.OrgLink}}/teams/{{.Team.LowerName}}"><span class="octicon octicon-person"></span> <strong>{{.Team.NumMembers}}</strong> {{$.i18n.Tr "org.lower_members"}}</a> · <a href="{{.OrgLink}}/teams/{{.Team.LowerName}}"><span class="octicon octicon-person"></span> <strong>{{.Team.NumMembers}}</strong> {{$.i18n.Tr "org.lower_members"}}</a> ·
<a href="{{.OrgLink}}/teams/{{.Team.LowerName}}/repositories"><span class="octicon octicon-repo"></span> <strong>{{.Team.NumRepos}}</strong> {{$.i18n.Tr "org.lower_repositories"}}</a> <a href="{{.OrgLink}}/teams/{{.Team.LowerName}}/repositories"><span class="octicon octicon-repo"></span> <strong>{{.Team.NumRepos}}</strong> {{$.i18n.Tr "org.lower_repositories"}}</a>
</div> </div>
<div class="item"> <div class="item">
{{if eq .Team.LowerName "owners"}} {{if eq .Team.LowerName "owners"}}
{{.i18n.Tr "org.teams.owners_permission_desc" | Str2html}} {{.i18n.Tr "org.teams.owners_permission_desc" | Str2html}}
{{else if (eq .Team.Authorize 1)}} {{else if (eq .Team.Authorize 1)}}
{{.i18n.Tr "org.teams.read_permission_desc" | Str2html}} {{.i18n.Tr "org.teams.read_permission_desc" | Str2html}}
{{else if (eq .Team.Authorize 2)}} {{else if (eq .Team.Authorize 2)}}
{{.i18n.Tr "org.teams.write_permission_desc" | Str2html}} {{.i18n.Tr "org.teams.write_permission_desc" | Str2html}}
{{else if (eq .Team.Authorize 3)}} {{else if (eq .Team.Authorize 3)}}
{{.i18n.Tr "org.teams.admin_permission_desc" | Str2html}} {{.i18n.Tr "org.teams.admin_permission_desc" | Str2html}}
{{end}} {{end}}
</div> </div>
</div> </div>
{{if .IsOrganizationOwner}} {{if .IsOrganizationOwner}}
<div class="ui bottom attached segment"> <div class="ui bottom attached segment">
<a class="ui teal small button" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/edit"><span class="octicon octicon-gear"></span> {{$.i18n.Tr "org.teams.settings"}}</a> <a class="ui teal small button" href="{{.OrgLink}}/teams/{{.Team.LowerName}}/edit"><span class="octicon octicon-gear"></span> {{$.i18n.Tr "org.teams.settings"}}</a>
</div> </div>
{{end}} {{end}}
</div> </div>

View File

@ -1,41 +1,41 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="organization teams"> <div class="organization teams">
{{template "org/header" .}} {{template "org/header" .}}
<div class="ui container"> <div class="ui container">
{{template "base/alert" .}} {{template "base/alert" .}}
{{if .IsOrganizationOwner}} {{if .IsOrganizationOwner}}
<div class="text right"> <div class="text right">
<a class="ui green button" href="{{.OrgLink}}/teams/new"><i class="octicon octicon-repo-create"></i> {{.i18n.Tr "org.create_new_team"}}</a> <a class="ui green button" href="{{.OrgLink}}/teams/new"><i class="octicon octicon-repo-create"></i> {{.i18n.Tr "org.create_new_team"}}</a>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
{{end}} {{end}}
<div class="ui two column grid"> <div class="ui two column grid">
{{range .Teams}} {{range .Teams}}
<div class="column"> <div class="column">
<div class="ui top attached header"> <div class="ui top attached header">
<a class="text black" href="{{$.OrgLink}}/teams/{{.LowerName}}"><strong>{{.Name}}</strong></a> <a class="text black" href="{{$.OrgLink}}/teams/{{.LowerName}}"><strong>{{.Name}}</strong></a>
<div class="ui right"> <div class="ui right">
{{if .IsMember $.SignedUser.Id}} {{if .IsMember $.SignedUser.Id}}
<a class="ui red small button" href="{{$.OrgLink}}/teams/{{.LowerName}}/action/leave?uid={{$.SignedUser.Id}}">{{$.i18n.Tr "org.teams.leave"}}</a> <a class="ui red small button" href="{{$.OrgLink}}/teams/{{.LowerName}}/action/leave?uid={{$.SignedUser.Id}}">{{$.i18n.Tr "org.teams.leave"}}</a>
{{else if $.IsOrganizationOwner}} {{else if $.IsOrganizationOwner}}
<a class="ui blue small button" href="{{$.OrgLink}}/teams/{{.LowerName}}/action/join?uid={{$.SignedUser.Id}}">{{$.i18n.Tr "org.teams.join"}}</a> <a class="ui blue small button" href="{{$.OrgLink}}/teams/{{.LowerName}}/action/join?uid={{$.SignedUser.Id}}">{{$.i18n.Tr "org.teams.join"}}</a>
{{end}} {{end}}
</div> </div>
</div>
<div class="ui attached segment members">
{{range .Members}}
<a href="{{.HomeLink}}" title="{{.Name}}">
<img class="ui avatar image" src="{{.AvatarLink}}">
</a>
{{end}}
</div>
<div class="ui bottom attached header">
<p class="team-meta">{{.NumMembers}} {{$.i18n.Tr "org.lower_members"}} · {{.NumRepos}} {{$.i18n.Tr "org.lower_repositories"}}</p>
</div>
</div> </div>
<div class="ui attached segment members">
{{range .Members}}
<a href="{{.HomeLink}}" title="{{.Name}}">
<img class="ui avatar image" src="{{.AvatarLink}}">
</a>
{{end}}
</div>
<div class="ui bottom attached header">
<p class="team-meta">{{.NumMembers}} {{$.i18n.Tr "org.lower_members"}} · {{.NumRepos}} {{$.i18n.Tr "org.lower_repositories"}}</p>
</div>
</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,61 +1,61 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository quickstart"> <div class="repository quickstart">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
<div class="sixteen wide column content"> <div class="sixteen wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
{{if .IsRepositoryAdmin}} {{if .IsRepositoryAdmin}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "repo.quick_guide"}} {{.i18n.Tr "repo.quick_guide"}}
<div class="ui right"> <div class="ui right">
<a class="ui black tiny button" href="{{.RepoLink}}/settings">{{.i18n.Tr "repo.settings"}}</a> <a class="ui black tiny button" href="{{.RepoLink}}/settings">{{.i18n.Tr "repo.settings"}}</a>
</div> </div>
</h4> </h4>
<div class="ui attached guide table segment"> <div class="ui attached guide table segment">
<div class="item"> <div class="item">
<h3>{{.i18n.Tr "repo.clone_this_repo"}} <small>{{.i18n.Tr "repo.clone_helper" "http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository" | Str2html}}</small></h3> <h3>{{.i18n.Tr "repo.clone_this_repo"}} <small>{{.i18n.Tr "repo.clone_helper" "http://git-scm.com/book/en/Git-Basics-Getting-a-Git-Repository" | Str2html}}</small></h3>
<div class="ui action small input"> <div class="ui action small input">
{{if not $.DisableSSH}} {{if not $.DisableSSH}}
<button class="ui blue basic clone button" id="repo-clone-ssh" data-link="{{.CloneLink.SSH}}"> <button class="ui blue basic clone button" id="repo-clone-ssh" data-link="{{.CloneLink.SSH}}">
SSH SSH
</button> </button>
{{end}} {{end}}
<button class="ui {{if $.DisableSSH}}blue{{end}} basic clone button" id="repo-clone-https" data-link="{{.CloneLink.HTTPS}}"> <button class="ui {{if $.DisableSSH}}blue{{end}} basic clone button" id="repo-clone-https" data-link="{{.CloneLink.HTTPS}}">
{{if UseHTTPS}}HTTPS{{else}}HTTP{{end}} {{if UseHTTPS}}HTTPS{{else}}HTTP{{end}}
</button> </button>
<input id="repo-clone-url" value="{{if $.DisableSSH}}{{$.CloneLink.HTTPS}}{{else}}{{$.CloneLink.SSH}}{{end}}" readonly> <input id="repo-clone-url" value="{{if $.DisableSSH}}{{$.CloneLink.HTTPS}}{{else}}{{$.CloneLink.SSH}}{{end}}" readonly>
<button class="ui basic button poping up clipboard" id="clipboard-btn" data-original="{{.i18n.Tr "repo.copy_link"}}" data-success="{{.i18n.Tr "repo.copy_link_success"}}" data-error="{{.i18n.Tr "repo.copy_link_error"}}" data-content="{{.i18n.Tr "repo.copy_link"}}" data-variation="inverted tiny" data-clipboard-target="#repo-clone-url"> <button class="ui basic button poping up clipboard" id="clipboard-btn" data-original="{{.i18n.Tr "repo.copy_link"}}" data-success="{{.i18n.Tr "repo.copy_link_success"}}" data-error="{{.i18n.Tr "repo.copy_link_error"}}" data-content="{{.i18n.Tr "repo.copy_link"}}" data-variation="inverted tiny" data-clipboard-target="#repo-clone-url">
<i class="octicon octicon-clippy"></i> <i class="octicon octicon-clippy"></i>
</button> </button>
</div> </div>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="item"> <div class="item">
<h3>{{.i18n.Tr "repo.create_new_repo_command"}}</h3> <h3>{{.i18n.Tr "repo.create_new_repo_command"}}</h3>
<div class="markdown"> <div class="markdown">
<pre><code>touch README.md <pre><code>touch README.md
git init git init
git add README.md git add README.md
git commit -m "first commit" git commit -m "first commit"
git remote add origin <span class="clone-url">{{if $.DisableSSH}}{{$.CloneLink.HTTPS}}{{else}}{{$.CloneLink.SSH}}{{end}}</span> git remote add origin <span class="clone-url">{{if $.DisableSSH}}{{$.CloneLink.HTTPS}}{{else}}{{$.CloneLink.SSH}}{{end}}</span>
git push -u origin master</code></pre> git push -u origin master</code></pre>
</div> </div>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="item"> <div class="item">
<h3>{{.i18n.Tr "repo.push_exist_repo"}}</h3> <h3>{{.i18n.Tr "repo.push_exist_repo"}}</h3>
<div class="markdown"> <div class="markdown">
<pre><code>git remote add origin <span class="clone-url">{{if $.DisableSSH}}{{$.CloneLink.HTTPS}}{{else}}{{$.CloneLink.SSH}}{{end}}</span> <pre><code>git remote add origin <span class="clone-url">{{if $.DisableSSH}}{{$.CloneLink.HTTPS}}{{else}}{{$.CloneLink.SSH}}{{end}}</span>
git push -u origin master</code></pre> git push -u origin master</code></pre>
</div> </div>
</div> </div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,8 +1,8 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository commits"> <div class="repository commits">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
{{template "repo/commits_table" .}} {{template "repo/commits_table" .}}
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,70 +1,70 @@
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.CommitCount}} {{.i18n.Tr "repo.commits.commits"}} {{if .Branch}}({{.Branch}}){{end}} {{.CommitCount}} {{.i18n.Tr "repo.commits.commits"}} {{if .Branch}}({{.Branch}}){{end}}
{{if .PageIsCommits}} {{if .PageIsCommits}}
<div class="ui right"> <div class="ui right">
<form action="{{.RepoLink}}/commits/{{.BranchName}}/search"> <form action="{{.RepoLink}}/commits/{{.BranchName}}/search">
<div class="ui tiny search input"> <div class="ui tiny search input">
<input name="q" placeholder="{{.i18n.Tr "repo.commits.search"}}" value="{{.Keyword}}" autofocus> <input name="q" placeholder="{{.i18n.Tr "repo.commits.search"}}" value="{{.Keyword}}" autofocus>
</div> </div>
<button class="ui black tiny button" data-panel="#add-deploy-key-panel">{{.i18n.Tr "repo.commits.find"}}</button> <button class="ui black tiny button" data-panel="#add-deploy-key-panel">{{.i18n.Tr "repo.commits.find"}}</button>
</form> </form>
</div> </div>
{{else if .IsDiffCompare}} {{else if .IsDiffCompare}}
<a href="{{$.CommitRepoLink}}/commit/{{.BeforeCommitID}}" class="ui green sha label">{{ShortSha .BeforeCommitID}}</a> ... <a href="{{$.CommitRepoLink}}/commit/{{.AfterCommitID}}" class="ui green sha label">{{ShortSha .AfterCommitID}}</a> <a href="{{$.CommitRepoLink}}/commit/{{.BeforeCommitID}}" class="ui green sha label">{{ShortSha .BeforeCommitID}}</a> ... <a href="{{$.CommitRepoLink}}/commit/{{.AfterCommitID}}" class="ui green sha label">{{ShortSha .AfterCommitID}}</a>
{{end}} {{end}}
</h4> </h4>
{{if .Commits}} {{if .Commits}}
<div class="ui attached table segment"> <div class="ui attached table segment">
<table class="ui very basic striped fixed table single line" id="commits-table"> <table class="ui very basic striped fixed table single line" id="commits-table">
<thead> <thead>
<tr> <tr>
<th class="four wide">{{.i18n.Tr "repo.commits.author"}}</th> <th class="four wide">{{.i18n.Tr "repo.commits.author"}}</th>
<th class="nine wide message"><span class="sha">SHA1</span> {{.i18n.Tr "repo.commits.message"}}</th> <th class="nine wide message"><span class="sha">SHA1</span> {{.i18n.Tr "repo.commits.message"}}</th>
<th class="three wide right aligned">{{.i18n.Tr "repo.commits.date"}}</th> <th class="three wide right aligned">{{.i18n.Tr "repo.commits.date"}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{ $r:= List .Commits}} {{ $r:= List .Commits}}
{{range $r}} {{range $r}}
<tr> <tr>
<td class="author"> <td class="author">
{{if .User}} {{if .User}}
<img class="ui avatar image" src="{{.User.AvatarLink}}" alt=""/>&nbsp;&nbsp;<a href="{{AppSubUrl}}/{{.User.Name}}">{{.Author.Name}}</a> <img class="ui avatar image" src="{{.User.AvatarLink}}" alt=""/>&nbsp;&nbsp;<a href="{{AppSubUrl}}/{{.User.Name}}">{{.Author.Name}}</a>
{{else}} {{else}}
<img class="ui avatar image" src="{{AvatarLink .Author.Email}}" alt=""/>&nbsp;&nbsp;{{.Author.Name}} <img class="ui avatar image" src="{{AvatarLink .Author.Email}}" alt=""/>&nbsp;&nbsp;{{.Author.Name}}
{{end}} {{end}}
</td> </td>
<td class="message collapsing"> <td class="message collapsing">
<a rel="nofollow" class="ui sha label" href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a> <a rel="nofollow" class="ui sha label" href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{.ID}}">{{ShortSha .ID.String}}</a>
{{RenderCommitMessage false .Summary $.RepoLink $.Repository.ComposeMetas}} {{RenderCommitMessage false .Summary $.RepoLink $.Repository.ComposeMetas}}
</td> </td>
<td class="grey text right aligned">{{TimeSince .Author.When $.Lang}}</td> <td class="grey text right aligned">{{TimeSince .Author.When $.Lang}}</td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>
</table> </table>
</div> </div>
{{end}} {{end}}
{{with .Page}} {{with .Page}}
{{if gt .TotalPages 1}} {{if gt .TotalPages 1}}
<div class="center page buttons"> <div class="center page buttons">
<div class="ui borderless pagination menu"> <div class="ui borderless pagination menu">
<a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.RepoLink}}/commits/{{$.BranchName}}{{if $.FileName}}/{{$.FileName}}{{end}}?page={{.Previous}}"{{end}}> <a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.RepoLink}}/commits/{{$.BranchName}}{{if $.FileName}}/{{$.FileName}}{{end}}?page={{.Previous}}"{{end}}>
<i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}} <i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
</a> </a>
{{range .Pages}} {{range .Pages}}
{{if eq .Num -1}} {{if eq .Num -1}}
<a class="disabled item">...</a> <a class="disabled item">...</a>
{{else}} {{else}}
<a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.RepoLink}}/commits/{{$.BranchName}}{{if $.FileName}}/{{$.FileName}}{{end}}?page={{.Num}}"{{end}}>{{.Num}}</a> <a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.RepoLink}}/commits/{{$.BranchName}}{{if $.FileName}}/{{$.FileName}}{{end}}?page={{.Num}}"{{end}}>{{.Num}}</a>
{{end}} {{end}}
{{end}} {{end}}
<a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.RepoLink}}/commits/{{$.BranchName}}{{if $.FileName}}/{{$.FileName}}{{end}}?page={{.Next}}"{{end}}> <a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.RepoLink}}/commits/{{$.BranchName}}{{if $.FileName}}/{{$.FileName}}{{end}}?page={{.Next}}"{{end}}>
{{$.i18n.Tr "repo.issues.next"}} <i class="icon right arrow"></i> {{$.i18n.Tr "repo.issues.next"}} <i class="icon right arrow"></i>
</a> </a>
</div> </div>
</div> </div>
{{end}}
{{end}} {{end}}
{{end}}

View File

@ -1,116 +1,116 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository new repo"> <div class="repository new repo">
<div class="ui middle very relaxed page grid"> <div class="ui middle very relaxed page grid">
<div class="column"> <div class="column">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<h3 class="ui top attached header"> <h3 class="ui top attached header">
{{.i18n.Tr "new_repo"}} {{.i18n.Tr "new_repo"}}
</h3> </h3>
<div class="ui attached segment"> <div class="ui attached segment">
{{template "base/alert" .}} {{template "base/alert" .}}
<div class="inline required field {{if .Err_Owner}}error{{end}}"> <div class="inline required field {{if .Err_Owner}}error{{end}}">
<label>{{.i18n.Tr "repo.owner"}}</label> <label>{{.i18n.Tr "repo.owner"}}</label>
<div class="ui selection owner dropdown"> <div class="ui selection owner dropdown">
<input type="hidden" id="uid" name="uid" value="{{.ContextUser.Id}}" required> <input type="hidden" id="uid" name="uid" value="{{.ContextUser.Id}}" required>
<span class="text"> <span class="text">
<img class="ui mini image" src="{{.ContextUser.AvatarLink}}"> <img class="ui mini image" src="{{.ContextUser.AvatarLink}}">
{{.ContextUser.ShortName 20}} {{.ContextUser.ShortName 20}}
</span> </span>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
<div class="item" data-value="{{.SignedUser.Id}}"> <div class="item" data-value="{{.SignedUser.Id}}">
<img class="ui mini image" src="{{.SignedUser.AvatarLink}}"> <img class="ui mini image" src="{{.SignedUser.AvatarLink}}">
{{.SignedUser.ShortName 20}} {{.SignedUser.ShortName 20}}
</div> </div>
{{range .Orgs}} {{range .Orgs}}
<div class="item" data-value="{{.Id}}"> <div class="item" data-value="{{.Id}}">
<img class="ui mini image" src="{{.AvatarLink}}"> <img class="ui mini image" src="{{.AvatarLink}}">
{{.ShortName 20}} {{.ShortName 20}}
</div> </div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
<div class="inline required field {{if .Err_RepoName}}error{{end}}"> <div class="inline required field {{if .Err_RepoName}}error{{end}}">
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label> <label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
<input id="repo_name" name="repo_name" value="{{.repo_name}}" autofocus required> <input id="repo_name" name="repo_name" value="{{.repo_name}}" autofocus required>
<span class="help">{{.i18n.Tr "repo.repo_name_helper" | Safe}}</span> <span class="help">{{.i18n.Tr "repo.repo_name_helper" | Safe}}</span>
</div> </div>
<div class="inline field"> <div class="inline field">
<label>{{.i18n.Tr "repo.visibility"}}</label> <label>{{.i18n.Tr "repo.visibility"}}</label>
<div class="ui checkbox"> <div class="ui checkbox">
{{if .IsForcedPrivate}} {{if .IsForcedPrivate}}
<input name="private" type="checkbox" checked readonly> <input name="private" type="checkbox" checked readonly>
<label>{{.i18n.Tr "repo.visiblity_helper_forced" | Safe}}</label> <label>{{.i18n.Tr "repo.visiblity_helper_forced" | Safe}}</label>
{{else}} {{else}}
<input name="private" type="checkbox" {{if .private}}checked{{end}}> <input name="private" type="checkbox" {{if .private}}checked{{end}}>
<label>{{.i18n.Tr "repo.visiblity_helper" | Safe}}</label> <label>{{.i18n.Tr "repo.visiblity_helper" | Safe}}</label>
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="inline field {{if .Err_Description}}error{{end}}"> <div class="inline field {{if .Err_Description}}error{{end}}">
<label for="description">{{.i18n.Tr "repo.repo_desc"}}</label> <label for="description">{{.i18n.Tr "repo.repo_desc"}}</label>
<textarea id="description" name="description">{{.description}}</textarea> <textarea id="description" name="description">{{.description}}</textarea>
</div> </div>
<div class="ui divider"></div>
<div class="inline field"> <div class="ui divider"></div>
<label>{{.i18n.Tr "repo.repo_lang"}}</label>
<div class="ui multiple search normal selection dropdown">
<input type="hidden" name="gitignores" value="{{.gitignores}}">
<div class="default text">{{.i18n.Tr "repo.repo_lang_helper"}}</div>
<div class="menu">
{{range .Gitignores}}
<div class="item" data-value="{{.}}">{{.}}</div>
{{end}}
</div>
</div>
</div>
<div class="inline field">
<label>{{.i18n.Tr "repo.license"}}</label>
<div class="ui search selection dropdown">
<input type="hidden" name="license" value="{{.license}}">
<div class="default text">{{.i18n.Tr "repo.license_helper"}}</div>
<div class="menu">
{{range .Licenses}}
<div class="item" data-value="{{.}}">{{.}}</div>
{{end}}
</div>
</div>
</div>
<div class="inline field"> <div class="inline field">
<label>{{.i18n.Tr "repo.readme"}} <a target="_blank" href="https://github.com/gogits/go-gogs-client/wiki/Repositories#litte-notes-on-readme-template"><span class="octicon octicon-question"></span></a></label> <label>{{.i18n.Tr "repo.repo_lang"}}</label>
<div class="ui selection dropdown"> <div class="ui multiple search normal selection dropdown">
<input type="hidden" name="readme" value="{{.readme}}"> <input type="hidden" name="gitignores" value="{{.gitignores}}">
<div class="default text">{{.i18n.Tr "repo.readme_helper"}}</div> <div class="default text">{{.i18n.Tr "repo.repo_lang_helper"}}</div>
<div class="menu"> <div class="menu">
{{range .Readmes}} {{range .Gitignores}}
<div class="item" data-value="{{.}}">{{.}}</div> <div class="item" data-value="{{.}}">{{.}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox" id="auto-init"> <label>{{.i18n.Tr "repo.license"}}</label>
<input class="hidden" name="auto_init" type="checkbox" tabindex="0" {{if .auto_init}}checked{{end}}> <div class="ui search selection dropdown">
<label>{{.i18n.Tr "repo.auto_init"}}</label> <input type="hidden" name="license" value="{{.license}}">
</div> <div class="default text">{{.i18n.Tr "repo.license_helper"}}</div>
</div> <div class="menu">
{{range .Licenses}}
<div class="item" data-value="{{.}}">{{.}}</div>
{{end}}
</div>
</div>
</div>
<div class="inline field"> <div class="inline field">
<label></label> <label>{{.i18n.Tr "repo.readme"}} <a target="_blank" href="https://github.com/gogits/go-gogs-client/wiki/Repositories#litte-notes-on-readme-template"><span class="octicon octicon-question"></span></a></label>
<button class="ui green button"> <div class="ui selection dropdown">
{{.i18n.Tr "repo.create_repo"}} <input type="hidden" name="readme" value="{{.readme}}">
</button> <div class="default text">{{.i18n.Tr "repo.readme_helper"}}</div>
<a class="ui button" href="{{AppSubUrl}}/">{{.i18n.Tr "cancel"}}</a> <div class="menu">
</div> {{range .Readmes}}
</div> <div class="item" data-value="{{.}}">{{.}}</div>
</form> {{end}}
</div> </div>
</div> </div>
</div>
<div class="inline field">
<div class="ui checkbox" id="auto-init">
<input class="hidden" name="auto_init" type="checkbox" tabindex="0" {{if .auto_init}}checked{{end}}>
<label>{{.i18n.Tr "repo.auto_init"}}</label>
</div>
</div>
<div class="inline field">
<label></label>
<button class="ui green button">
{{.i18n.Tr "repo.create_repo"}}
</button>
<a class="ui button" href="{{AppSubUrl}}/">{{.i18n.Tr "cancel"}}</a>
</div>
</div>
</form>
</div>
</div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,45 +1,45 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository diff"> <div class="repository diff">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
{{if .IsDiffCompare }} {{if .IsDiffCompare }}
{{template "repo/commits_table" .}} {{template "repo/commits_table" .}}
{{else}} {{else}}
<div class="ui top attached info clearing segment"> <div class="ui top attached info clearing segment">
<a class="ui floated right blue tiny button" href="{{EscapePound .SourcePath}}"> <a class="ui floated right blue tiny button" href="{{EscapePound .SourcePath}}">
{{.i18n.Tr "repo.diff.browse_source"}} {{.i18n.Tr "repo.diff.browse_source"}}
</a> </a>
{{RenderCommitMessage true .Commit.Message $.RepoLink $.Repository.ComposeMetas}} {{RenderCommitMessage true .Commit.Message $.RepoLink $.Repository.ComposeMetas}}
</div> </div>
<div class="ui attached info segment"> <div class="ui attached info segment">
{{if .Author}} {{if .Author}}
<img class="ui avatar image" src="{{.Author.AvatarLink}}" /> <img class="ui avatar image" src="{{.Author.AvatarLink}}" />
<a href="{{.Author.HomeLink}}"><strong>{{.Commit.Author.Name}}</strong></a> <a href="{{.Author.HomeLink}}"><strong>{{.Commit.Author.Name}}</strong></a>
{{else}} {{else}}
<img class="ui avatar image" src="{{AvatarLink .Commit.Author.Email}}" /> <img class="ui avatar image" src="{{AvatarLink .Commit.Author.Email}}" />
<strong>{{.Commit.Author.Name}}</strong> <strong>{{.Commit.Author.Name}}</strong>
{{end}} {{end}}
<span class="text grey" id="authored-time">{{TimeSince .Commit.Author.When $.Lang}}</span> <span class="text grey" id="authored-time">{{TimeSince .Commit.Author.When $.Lang}}</span>
<div class="ui right"> <div class="ui right">
<div class="ui horizontal list"> <div class="ui horizontal list">
{{if .Parents}} {{if .Parents}}
<div class="item"> <div class="item">
{{.i18n.Tr "repo.diff.parent"}} {{.i18n.Tr "repo.diff.parent"}}
</div> </div>
<div class="item"> <div class="item">
{{range .Parents}} {{range .Parents}}
<a class="ui blue sha label" href="{{$.RepoLink}}/commit/{{.}}">{{ShortSha .}}</a> <a class="ui blue sha label" href="{{$.RepoLink}}/commit/{{.}}">{{ShortSha .}}</a>
{{end}} {{end}}
</div> </div>
{{end}} {{end}}
<div class="item">{{.i18n.Tr "repo.diff.commit"}}</div> <div class="item">{{.i18n.Tr "repo.diff.commit"}}</div>
<div class="item"><span class="ui blue sha label">{{ShortSha .CommitID}}</span></div> <div class="item"><span class="ui blue sha label">{{ShortSha .CommitID}}</span></div>
</div> </div>
</div> </div>
</div> </div>
{{end}} {{end}}
{{template "repo/diff_box" .}} {{template "repo/diff_box" .}}
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,94 +1,94 @@
{{if .DiffNotAvailable}} {{if .DiffNotAvailable}}
<h4>{{.i18n.Tr "repo.diff.data_not_available"}}</h4> <h4>{{.i18n.Tr "repo.diff.data_not_available"}}</h4>
{{else}} {{else}}
<div class="diff-detail-box diff-box"> <div class="diff-detail-box diff-box">
<div> <div>
<i class="fa fa-retweet"></i> <i class="fa fa-retweet"></i>
{{.i18n.Tr "repo.diff.stats_desc" .Diff.NumFiles .Diff.TotalAddition .Diff.TotalDeletion | Str2html}} {{.i18n.Tr "repo.diff.stats_desc" .Diff.NumFiles .Diff.TotalAddition .Diff.TotalDeletion | Str2html}}
<div class="ui right"> <div class="ui right">
<a class="ui tiny basic black toggle button" data-target="#diff-files">{{.i18n.Tr "repo.diff.show_diff_stats"}}</a> <a class="ui tiny basic black toggle button" data-target="#diff-files">{{.i18n.Tr "repo.diff.show_diff_stats"}}</a>
</div> </div>
</div> </div>
<ol class="detail-files hide" id="diff-files"> <ol class="detail-files hide" id="diff-files">
{{range .Diff.Files}} {{range .Diff.Files}}
<li> <li>
<div class="diff-counter count pull-right"> <div class="diff-counter count pull-right">
{{if not .IsBin}} {{if not .IsBin}}
<span class="add" data-line="{{.Addition}}">{{.Addition}}</span> <span class="add" data-line="{{.Addition}}">{{.Addition}}</span>
<span class="bar"> <span class="bar">
<span class="pull-left add"></span> <span class="pull-left add"></span>
<span class="pull-left del"></span> <span class="pull-left del"></span>
</span> </span>
<span class="del" data-line="{{.Deletion}}">{{.Deletion}}</span> <span class="del" data-line="{{.Deletion}}">{{.Deletion}}</span>
{{else}} {{else}}
<span>{{$.i18n.Tr "repo.diff.bin"}}</span> <span>{{$.i18n.Tr "repo.diff.bin"}}</span>
{{end}} {{end}}
</div> </div>
<!-- todo finish all file status, now modify, add, delete and rename --> <!-- todo finish all file status, now modify, add, delete and rename -->
<span class="status {{DiffTypeToStr .Type}} poping up" data-content="{{DiffTypeToStr .Type}}" data-variation="inverted tiny" data-position="right center">&nbsp;</span> <span class="status {{DiffTypeToStr .Type}} poping up" data-content="{{DiffTypeToStr .Type}}" data-variation="inverted tiny" data-position="right center">&nbsp;</span>
<a class="file" href="#diff-{{.Index}}">{{.Name}}</a> <a class="file" href="#diff-{{.Index}}">{{.Name}}</a>
</li> </li>
{{end}} {{end}}
</ol> </ol>
</div> </div>
{{range $i, $file := .Diff.Files}} {{range $i, $file := .Diff.Files}}
<div class="diff-file-box diff-box file-content" id="diff-{{.Index}}"> <div class="diff-file-box diff-box file-content" id="diff-{{.Index}}">
<h4 class="ui top attached normal header"> <h4 class="ui top attached normal header">
<div class="diff-counter count ui left"> <div class="diff-counter count ui left">
{{if $file.IsBin}} {{if $file.IsBin}}
{{$.i18n.Tr "repo.diff.bin"}} {{$.i18n.Tr "repo.diff.bin"}}
{{else if not $file.IsRenamed}} {{else if not $file.IsRenamed}}
<span class="add" data-line="{{.Addition}}">+ {{.Addition}}</span> <span class="add" data-line="{{.Addition}}">+ {{.Addition}}</span>
<span class="bar"> <span class="bar">
<span class="pull-left add"></span> <span class="pull-left add"></span>
<span class="pull-left del"></span> <span class="pull-left del"></span>
</span> </span>
<span class="del" data-line="{{.Deletion}}">- {{.Deletion}}</span> <span class="del" data-line="{{.Deletion}}">- {{.Deletion}}</span>
{{end}} {{end}}
</div> </div>
<span class="file">{{if $file.IsRenamed}}{{$file.OldName}} &rarr; {{end}}{{$file.Name}}</span> <span class="file">{{if $file.IsRenamed}}{{$file.OldName}} &rarr; {{end}}{{$file.Name}}</span>
<div class="ui right"> <div class="ui right">
{{if $file.IsDeleted}} {{if $file.IsDeleted}}
<a class="ui basic tiny button" rel="nofollow" href="{{EscapePound $.BeforeSourcePath}}/{{EscapePound .Name}}">{{$.i18n.Tr "repo.diff.view_file"}}</a> <a class="ui basic tiny button" rel="nofollow" href="{{EscapePound $.BeforeSourcePath}}/{{EscapePound .Name}}">{{$.i18n.Tr "repo.diff.view_file"}}</a>
{{else}} {{else}}
<a class="ui basic tiny button" rel="nofollow" href="{{EscapePound $.SourcePath}}/{{EscapePound .Name}}">{{$.i18n.Tr "repo.diff.view_file"}}</a> <a class="ui basic tiny button" rel="nofollow" href="{{EscapePound $.SourcePath}}/{{EscapePound .Name}}">{{$.i18n.Tr "repo.diff.view_file"}}</a>
{{end}} {{end}}
</div> </div>
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
{{if not $file.IsRenamed}} {{if not $file.IsRenamed}}
{{$isImage := (call $.IsImageFile $file.Name)}} {{$isImage := (call $.IsImageFile $file.Name)}}
{{if and $isImage}} {{if and $isImage}}
<div class="center"> <div class="center">
<img src="{{$.RawPath}}/{{EscapePound .Name}}"> <img src="{{$.RawPath}}/{{EscapePound .Name}}">
</div> </div>
{{else}} {{else}}
<div class="file-body file-code code-view code-diff"> <div class="file-body file-code code-view code-diff">
<table> <table>
<tbody> <tbody>
{{range .Sections}} {{range .Sections}}
{{range $k, $line := .Lines}} {{range $k, $line := .Lines}}
<tr class="{{DiffLineTypeToStr .Type}}-code nl-{{$k}} ol-{{$k}}"> <tr class="{{DiffLineTypeToStr .Type}}-code nl-{{$k}} ol-{{$k}}">
<td class="lines-num lines-num-old"> <td class="lines-num lines-num-old">
<span rel="{{if $line.LeftIdx}}diff-{{Sha1 $file.Name}}L{{$line.LeftIdx}}{{end}}">{{if $line.LeftIdx}}{{$line.LeftIdx}}{{end}}</span> <span rel="{{if $line.LeftIdx}}diff-{{Sha1 $file.Name}}L{{$line.LeftIdx}}{{end}}">{{if $line.LeftIdx}}{{$line.LeftIdx}}{{end}}</span>
</td> </td>
<td class="lines-num lines-num-new"> <td class="lines-num lines-num-new">
<span rel="{{if $line.RightIdx}}diff-{{Sha1 $file.Name}}R{{$line.RightIdx}}{{end}}">{{if $line.RightIdx}}{{$line.RightIdx}}{{end}}</span> <span rel="{{if $line.RightIdx}}diff-{{Sha1 $file.Name}}R{{$line.RightIdx}}{{end}}">{{if $line.RightIdx}}{{$line.RightIdx}}{{end}}</span>
</td> </td>
<td class="lines-code"> <td class="lines-code">
<pre>{{$line.Content}}</pre> <pre>{{$line.Content}}</pre>
</td> </td>
</tr> </tr>
{{end}} {{end}}
{{end}} {{end}}
</tbody> </tbody>
</table> </table>
</div> </div>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
<br> <br>
{{end}}
{{end}} {{end}}
{{end}}

View File

@ -1,22 +1,22 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository forks"> <div class="repository forks">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
<h2 class="ui dividing header"> <h2 class="ui dividing header">
{{.i18n.Tr "repo.forks"}} {{.i18n.Tr "repo.forks"}}
</h2> </h2>
<div class="ui list"> <div class="ui list">
{{range .Forks}} {{range .Forks}}
<div class="item"> <div class="item">
<img class="ui avatar image" src="{{.Owner.AvatarLink}}"> <img class="ui avatar image" src="{{.Owner.AvatarLink}}">
<div class="link"> <div class="link">
<a href="{{AppSubUrl}}/{{.Owner.Name}}">{{.Owner.Name}}</a> <a href="{{AppSubUrl}}/{{.Owner.Name}}">{{.Owner.Name}}</a>
/ /
<a href="{{AppSubUrl}}/{{.Owner.Name}}/{{.Name}}">{{.Name}}</a> <a href="{{AppSubUrl}}/{{.Owner.Name}}/{{.Name}}">{{.Name}}</a>
</div> </div>
</div> </div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,87 +1,87 @@
{{with .Repository}} {{with .Repository}}
<div class="ui container"><!-- start container --> <div class="ui container"><!-- start container -->
<div class="ui vertically padded grid head"><!-- start grid --> <div class="ui vertically padded grid head"><!-- start grid -->
<div class="column"><!-- start column --> <div class="column"><!-- start column -->
<div class="ui header"> <div class="ui header">
<div class="ui huge breadcrumb"> <div class="ui huge breadcrumb">
<i class="mega-octicon octicon-{{if .IsPrivate}}lock{{else if .IsMirror}}repo-clone{{else if .IsFork}}repo-forked{{else}}repo{{end}}"></i> <i class="mega-octicon octicon-{{if .IsPrivate}}lock{{else if .IsMirror}}repo-clone{{else if .IsFork}}repo-forked{{else}}repo{{end}}"></i>
<a href="{{AppSubUrl}}/{{.Owner.Name}}">{{.Owner.Name}}</a> <a href="{{AppSubUrl}}/{{.Owner.Name}}">{{.Owner.Name}}</a>
<div class="divider"> / </div> <div class="divider"> / </div>
<a href="{{$.RepoLink}}">{{.Name}}</a> <a href="{{$.RepoLink}}">{{.Name}}</a>
{{if .IsMirror}}<div class="ui label">{{$.i18n.Tr "mirror"}}</div>{{end}} {{if .IsMirror}}<div class="ui label">{{$.i18n.Tr "mirror"}}</div>{{end}}
{{if .IsFork}}<div class="fork-flag">{{$.i18n.Tr "repo.forked_from"}} <a href="{{.BaseRepo.RepoLink}}">{{SubStr .BaseRepo.RepoLink 1 -1}}</a></div>{{end}} {{if .IsFork}}<div class="fork-flag">{{$.i18n.Tr "repo.forked_from"}} <a href="{{.BaseRepo.RepoLink}}">{{SubStr .BaseRepo.RepoLink 1 -1}}</a></div>{{end}}
</div> </div>
<div class="ui right"> <div class="ui right">
<div class="ui labeled button" tabindex="0"> <div class="ui labeled button" tabindex="0">
<a class="ui button" href="{{$.RepoLink}}/action/{{if $.IsWatchingRepo}}un{{end}}watch?redirect_to={{$.Link}}"> <a class="ui button" href="{{$.RepoLink}}/action/{{if $.IsWatchingRepo}}un{{end}}watch?redirect_to={{$.Link}}">
<i class="icon fa fa-eye{{if not $.IsWatchingRepo}}-slash{{end}}"></i>{{if $.IsWatchingRepo}}{{$.i18n.Tr "repo.unwatch"}}{{else}}{{$.i18n.Tr "repo.watch"}}{{end}} <i class="icon fa fa-eye{{if not $.IsWatchingRepo}}-slash{{end}}"></i>{{if $.IsWatchingRepo}}{{$.i18n.Tr "repo.unwatch"}}{{else}}{{$.i18n.Tr "repo.watch"}}{{end}}
</a> </a>
<a class="ui basic label" href="{{.RepoLink}}/watchers"> <a class="ui basic label" href="{{.RepoLink}}/watchers">
{{.NumWatches}} {{.NumWatches}}
</a> </a>
</div> </div>
<div class="ui labeled button" tabindex="0"> <div class="ui labeled button" tabindex="0">
<a class="ui button" href="{{$.RepoLink}}/action/{{if $.IsStaringRepo}}un{{end}}star?redirect_to={{$.Link}}"> <a class="ui button" href="{{$.RepoLink}}/action/{{if $.IsStaringRepo}}un{{end}}star?redirect_to={{$.Link}}">
<i class="icon fa-star{{if not $.IsStaringRepo}}-o{{end}}"></i>{{if $.IsStaringRepo}}{{$.i18n.Tr "repo.unstar"}}{{else}}{{$.i18n.Tr "repo.star"}}{{end}} <i class="icon fa-star{{if not $.IsStaringRepo}}-o{{end}}"></i>{{if $.IsStaringRepo}}{{$.i18n.Tr "repo.unstar"}}{{else}}{{$.i18n.Tr "repo.star"}}{{end}}
</a> </a>
<a class="ui basic label" href="{{.RepoLink}}/stars"> <a class="ui basic label" href="{{.RepoLink}}/stars">
{{.NumStars}} {{.NumStars}}
</a> </a>
</div> </div>
{{if .CanBeForked}} {{if .CanBeForked}}
<div class="ui labeled button" tabindex="0"> <div class="ui labeled button" tabindex="0">
<a class="ui button {{if eq .OwnerID $.SignedUserID}}poping up{{end}}" {{if not (eq .OwnerID $.SignedUserID)}}href="{{AppSubUrl}}/repo/fork/{{.ID}}"{{else}} data-content="{{$.i18n.Tr "repo.fork_from_self"}}" data-position="top center" data-variation="tiny"{{end}}> <a class="ui button {{if eq .OwnerID $.SignedUserID}}poping up{{end}}" {{if not (eq .OwnerID $.SignedUserID)}}href="{{AppSubUrl}}/repo/fork/{{.ID}}"{{else}} data-content="{{$.i18n.Tr "repo.fork_from_self"}}" data-position="top center" data-variation="tiny"{{end}}>
<i class="icon octicon octicon-repo-forked"></i>{{$.i18n.Tr "repo.fork"}} <i class="icon octicon octicon-repo-forked"></i>{{$.i18n.Tr "repo.fork"}}
</a> </a>
<a class="ui basic label" href="{{.RepoLink}}/forks"> <a class="ui basic label" href="{{.RepoLink}}/forks">
{{.NumForks}} {{.NumForks}}
</a> </a>
</div> </div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div><!-- end column --> </div><!-- end column -->
</div><!-- end grid --> </div><!-- end grid -->
</div><!-- end container --> </div><!-- end container -->
{{end}} {{end}}
{{if not (or .IsBareRepo .IsDiffCompare)}} {{if not (or .IsBareRepo .IsDiffCompare)}}
<div class="ui tabs container"> <div class="ui tabs container">
<div class="ui tabular menu navbar"> <div class="ui tabular menu navbar">
<a class="{{if .PageIsViewCode}}active{{end}} item" href="{{.RepoLink}}"> <a class="{{if .PageIsViewCode}}active{{end}} item" href="{{.RepoLink}}">
<i class="icon octicon octicon-code"></i> {{.i18n.Tr "repo.code"}} <i class="icon octicon octicon-code"></i> {{.i18n.Tr "repo.code"}}
</a> </a>
{{if .Repository.EnableIssues}} {{if .Repository.EnableIssues}}
<a class="{{if .PageIsIssueList}}active{{end}} item" href="{{.RepoLink}}/issues"> <a class="{{if .PageIsIssueList}}active{{end}} item" href="{{.RepoLink}}/issues">
<i class="icon octicon octicon-issue-opened"></i> {{.i18n.Tr "repo.issues"}} <span class="ui {{if not .Repository.NumOpenIssues}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenIssues}}</span> <i class="icon octicon octicon-issue-opened"></i> {{.i18n.Tr "repo.issues"}} <span class="ui {{if not .Repository.NumOpenIssues}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenIssues}}</span>
</a> </a>
{{end}} {{end}}
{{if .Repository.EnablePulls}} {{if .Repository.EnablePulls}}
<a class="{{if .PageIsPullList}}active{{end}} item" href="{{.RepoLink}}/pulls"> <a class="{{if .PageIsPullList}}active{{end}} item" href="{{.RepoLink}}/pulls">
<i class="icon octicon octicon-git-pull-request"></i> {{.i18n.Tr "repo.pulls"}} <span class="ui {{if not .Repository.NumOpenPulls}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenPulls}}</span> <i class="icon octicon octicon-git-pull-request"></i> {{.i18n.Tr "repo.pulls"}} <span class="ui {{if not .Repository.NumOpenPulls}}gray{{else}}blue{{end}} small label">{{.Repository.NumOpenPulls}}</span>
</a> </a>
{{end}} {{end}}
<a class="{{if .PageIsCommits}}active{{end}} item" href="{{.RepoLink}}/commits/{{EscapePound .BranchName}}"> <a class="{{if .PageIsCommits}}active{{end}} item" href="{{.RepoLink}}/commits/{{EscapePound .BranchName}}">
<i class="icon octicon octicon-history"></i> {{.i18n.Tr "repo.commits"}} <span class="ui {{if not .CommitsCount}}gray{{else}}blue{{end}} small label">{{.CommitsCount}}</span> <i class="icon octicon octicon-history"></i> {{.i18n.Tr "repo.commits"}} <span class="ui {{if not .CommitsCount}}gray{{else}}blue{{end}} small label">{{.CommitsCount}}</span>
</a> </a>
<a class="{{if .PageIsReleaseList}}active{{end}} item" href="{{.RepoLink}}/releases"> <a class="{{if .PageIsReleaseList}}active{{end}} item" href="{{.RepoLink}}/releases">
<i class="icon octicon octicon-tag"></i> {{.i18n.Tr "repo.releases"}} <span class="ui {{if not .Repository.NumTags}}gray{{else}}blue{{end}} small label">{{.Repository.NumTags}}</span> <i class="icon octicon octicon-tag"></i> {{.i18n.Tr "repo.releases"}} <span class="ui {{if not .Repository.NumTags}}gray{{else}}blue{{end}} small label">{{.Repository.NumTags}}</span>
</a> </a>
{{if .Repository.EnableWiki}} {{if .Repository.EnableWiki}}
<a class="{{if .PageIsWiki}}active{{end}} item" href="{{.RepoLink}}/wiki"> <a class="{{if .PageIsWiki}}active{{end}} item" href="{{.RepoLink}}/wiki">
<i class="icon octicon octicon-book"></i> {{.i18n.Tr "repo.wiki"}} <i class="icon octicon octicon-book"></i> {{.i18n.Tr "repo.wiki"}}
</a> </a>
{{end}} {{end}}
{{if .IsRepositoryAdmin}} {{if .IsRepositoryAdmin}}
<div class="right menu"> <div class="right menu">
<a class="{{if .PageIsSettings}}active{{end}} item" href="{{.RepoLink}}/settings"> <a class="{{if .PageIsSettings}}active{{end}} item" href="{{.RepoLink}}/settings">
<i class="icon octicon octicon-tools"></i> {{.i18n.Tr "repo.settings"}} <i class="icon octicon octicon-tools"></i> {{.i18n.Tr "repo.settings"}}
</a> </a>
</div> </div>
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="ui tabs divider"></div> <div class="ui tabs divider"></div>
{{else}} {{else}}
<div class="ui divider"></div> <div class="ui divider"></div>
{{end}} {{end}}

View File

@ -1,111 +1,111 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository file list"> <div class="repository file list">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
<p id="repo-desc"> <p id="repo-desc">
{{if .Repository.DescriptionHtml}}<span class="description">{{.Repository.DescriptionHtml}}</span>{{else}}<span class="no-description text-italic">{{.i18n.Tr "repo.no_desc"}}</span>{{end}} {{if .Repository.DescriptionHtml}}<span class="description">{{.Repository.DescriptionHtml}}</span>{{else}}<span class="no-description text-italic">{{.i18n.Tr "repo.no_desc"}}</span>{{end}}
<a class="link" href="{{.Repository.Website}}">{{.Repository.Website}}</a> <a class="link" href="{{.Repository.Website}}">{{.Repository.Website}}</a>
</p> </p>
<div class="ui secondary menu"> <div class="ui secondary menu">
{{if .CanPullRequest}} {{if .CanPullRequest}}
<div class="fitted item"> <div class="fitted item">
{{ $baseRepo := .Repository.BaseRepo}} {{ $baseRepo := .Repository.BaseRepo}}
<a href="{{AppSubUrl}}/{{$baseRepo.Owner.Name}}/{{$baseRepo.Name}}/compare/{{$.BaseDefaultBranch}}...{{$.Owner.Name}}:{{$.BranchName}}"> <a href="{{AppSubUrl}}/{{$baseRepo.Owner.Name}}/{{$baseRepo.Name}}/compare/{{$.BaseDefaultBranch}}...{{$.Owner.Name}}:{{$.BranchName}}">
<button class="ui green small button"><i class="octicon octicon-git-compare"></i></button> <button class="ui green small button"><i class="octicon octicon-git-compare"></i></button>
</a> </a>
</div> </div>
{{end}} {{end}}
<div class="fitted item choose reference"> <div class="fitted item choose reference">
<div class="ui floating filter dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}"> <div class="ui floating filter dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}">
<div class="ui basic small button"> <div class="ui basic small button">
<span class="text"> <span class="text">
<i class="octicon octicon-git-branch"></i> <i class="octicon octicon-git-branch"></i>
{{if .IsViewBranch}}{{.i18n.Tr "repo.branch"}}{{else}}{{.i18n.Tr "repo.tree"}}{{end}}: {{if .IsViewBranch}}{{.i18n.Tr "repo.branch"}}{{else}}{{.i18n.Tr "repo.tree"}}{{end}}:
<strong>{{if .IsViewBranch}}{{.BranchName}}{{else}}{{ShortSha .BranchName}}{{end}}</strong> <strong>{{if .IsViewBranch}}{{.BranchName}}{{else}}{{ShortSha .BranchName}}{{end}}</strong>
</span> </span>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
</div> </div>
<div class="menu"> <div class="menu">
<div class="ui icon search input"> <div class="ui icon search input">
<i class="filter icon"></i> <i class="filter icon"></i>
<input name="search" placeholder="{{.i18n.Tr "repo.filter_branch_and_tag"}}..."> <input name="search" placeholder="{{.i18n.Tr "repo.filter_branch_and_tag"}}...">
</div> </div>
<div class="header"> <div class="header">
<div class="ui grid"> <div class="ui grid">
<div class="two column row"> <div class="two column row">
<a class="reference column" href="#" data-target="#branch-list"> <a class="reference column" href="#" data-target="#branch-list">
<span class="text {{if .IsViewBranch}}black{{end}}"> <span class="text {{if .IsViewBranch}}black{{end}}">
<i class="icon octicon octicon-git-branch"></i> {{.i18n.Tr "repo.branches"}} <i class="icon octicon octicon-git-branch"></i> {{.i18n.Tr "repo.branches"}}
</span> </span>
</a> </a>
<a class="reference column" href="#" data-target="#tag-list"> <a class="reference column" href="#" data-target="#tag-list">
<span class="text {{if .IsTag}}black{{end}}"> <span class="text {{if .IsTag}}black{{end}}">
<i class="reference tags icon"></i> {{.i18n.Tr "repo.tags"}} <i class="reference tags icon"></i> {{.i18n.Tr "repo.tags"}}
</span> </span>
</a> </a>
</div> </div>
</div> </div>
</div> </div>
<div id="branch-list" class="scrolling menu" {{if .IsTag}}style="display: none"{{end}}> <div id="branch-list" class="scrolling menu" {{if .IsTag}}style="display: none"{{end}}>
{{range .Branches}} {{range .Branches}}
<div class="item {{if eq $.BranchName .}}selected{{end}}" data-url="{{$.RepoLink}}/src/{{EscapePound .}}">{{.}}</div> <div class="item {{if eq $.BranchName .}}selected{{end}}" data-url="{{$.RepoLink}}/src/{{EscapePound .}}">{{.}}</div>
{{end}} {{end}}
</div> </div>
<div id="tag-list" class="scrolling menu" {{if .IsViewBranch}}style="display: none"{{end}}> <div id="tag-list" class="scrolling menu" {{if .IsViewBranch}}style="display: none"{{end}}>
{{range .Tags}} {{range .Tags}}
<div class="item {{if eq $.BranchName .}}selected{{end}}" data-url="{{$.RepoLink}}/src/{{EscapePound .}}">{{.}}</div> <div class="item {{if eq $.BranchName .}}selected{{end}}" data-url="{{$.RepoLink}}/src/{{EscapePound .}}">{{.}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="item fitted"> <div class="item fitted">
<div class="ui breadcrumb"> <div class="ui breadcrumb">
<a class="section" href="{{.RepoLink}}/src/{{EscapePound .BranchName}}">{{.Repository.Name}}</a> <a class="section" href="{{.RepoLink}}/src/{{EscapePound .BranchName}}">{{.Repository.Name}}</a>
{{ $n := len .Treenames}} {{ $n := len .Treenames}}
{{ $l := Subtract $n 1}} {{ $l := Subtract $n 1}}
{{range $i, $v := .Treenames}} {{range $i, $v := .Treenames}}
<div class="divider"> / </div> <div class="divider"> / </div>
{{if eq $i $l}} {{if eq $i $l}}
<span class="active section">{{$v}}</span> <span class="active section">{{$v}}</span>
{{else}} {{else}}
{{ $p := index $.Paths $i}} {{ $p := index $.Paths $i}}
<span class="section"><a href="{{EscapePound $.BranchLink}}/{{EscapePound $p}}">{{$v}}</a></span> <span class="section"><a href="{{EscapePound $.BranchLink}}/{{EscapePound $p}}">{{$v}}</a></span>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
{{if eq $n 0}} {{if eq $n 0}}
<div class="right fitted item"> <div class="right fitted item">
<div class="ui action small input" id="clone-panel"> <div class="ui action small input" id="clone-panel">
{{if not $.DisableSSH}} {{if not $.DisableSSH}}
<button class="ui blue basic clone button" id="repo-clone-ssh" data-link="{{.CloneLink.SSH}}"> <button class="ui blue basic clone button" id="repo-clone-ssh" data-link="{{.CloneLink.SSH}}">
SSH SSH
</button> </button>
{{end}} {{end}}
<button class="ui {{if $.DisableSSH}}blue{{end}} basic clone button" id="repo-clone-https" data-link="{{.CloneLink.HTTPS}}"> <button class="ui {{if $.DisableSSH}}blue{{end}} basic clone button" id="repo-clone-https" data-link="{{.CloneLink.HTTPS}}">
{{if UseHTTPS}}HTTPS{{else}}HTTP{{end}} {{if UseHTTPS}}HTTPS{{else}}HTTP{{end}}
</button> </button>
<input id="repo-clone-url" value="{{if $.DisableSSH}}{{$.CloneLink.HTTPS}}{{else}}{{$.CloneLink.SSH}}{{end}}" readonly> <input id="repo-clone-url" value="{{if $.DisableSSH}}{{$.CloneLink.HTTPS}}{{else}}{{$.CloneLink.SSH}}{{end}}" readonly>
<button class="ui basic icon button poping up clipboard" id="clipboard-btn" data-original="{{.i18n.Tr "repo.copy_link"}}" data-success="{{.i18n.Tr "repo.copy_link_success"}}" data-error="{{.i18n.Tr "repo.copy_link_error"}}" data-content="{{.i18n.Tr "repo.copy_link"}}" data-variation="inverted tiny" data-clipboard-target="#repo-clone-url"> <button class="ui basic icon button poping up clipboard" id="clipboard-btn" data-original="{{.i18n.Tr "repo.copy_link"}}" data-success="{{.i18n.Tr "repo.copy_link_success"}}" data-error="{{.i18n.Tr "repo.copy_link_error"}}" data-content="{{.i18n.Tr "repo.copy_link"}}" data-variation="inverted tiny" data-clipboard-target="#repo-clone-url">
<i class="octicon octicon-clippy"></i> <i class="octicon octicon-clippy"></i>
</button> </button>
<div class="ui basic jump dropdown icon button"> <div class="ui basic jump dropdown icon button">
<i class="download icon"></i> <i class="download icon"></i>
<div class="menu"> <div class="menu">
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.zip"><i class="icon octicon octicon-file-zip"></i> ZIP</a> <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.zip"><i class="icon octicon octicon-file-zip"></i> ZIP</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.tar.gz"><i class="icon octicon octicon-file-zip"></i> TAR.GZ</a> <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.tar.gz"><i class="icon octicon octicon-file-zip"></i> TAR.GZ</a>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{end}} {{end}}
</div> </div>
{{if .IsFile}} {{if .IsFile}}
{{template "repo/view_file" .}} {{template "repo/view_file" .}}
{{else}} {{else}}
{{template "repo/view_list" .}} {{template "repo/view_list" .}}
{{end}} {{end}}
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,16 +1,16 @@
<div class="field"> <div class="field">
<div class="ui top attached tabular menu" data-write="write" data-preview="preview"> <div class="ui top attached tabular menu" data-write="write" data-preview="preview">
<a class="active item" data-tab="write">{{.i18n.Tr "repo.release.write"}}</a> <a class="active item" data-tab="write">{{.i18n.Tr "repo.release.write"}}</a>
<a class="item" data-tab="preview" data-url="{{AppSubUrl}}/api/v1/markdown" data-context="{{.RepoLink}}">{{.i18n.Tr "repo.release.preview"}}</a> <a class="item" data-tab="preview" data-url="{{AppSubUrl}}/api/v1/markdown" data-context="{{.RepoLink}}">{{.i18n.Tr "repo.release.preview"}}</a>
</div> </div>
<div class="ui bottom attached active tab segment" data-tab="write"> <div class="ui bottom attached active tab segment" data-tab="write">
<textarea id="content" name="content" tabindex="4"></textarea> <textarea id="content" name="content" tabindex="4"></textarea>
</div> </div>
<div class="ui bottom attached tab segment markdown" data-tab="preview"> <div class="ui bottom attached tab segment markdown" data-tab="preview">
{{.i18n.Tr "repo.release.loading"}} {{.i18n.Tr "repo.release.loading"}}
</div> </div>
</div> </div>
{{if .IsAttachmentEnabled}} {{if .IsAttachmentEnabled}}
<div class="attachments"></div> <div class="attachments"></div>
<div class="ui basic button dropzone" id="dropzone" data-upload-url="{{AppSubUrl}}/issues/attachments" data-accepts="{{.AttachmentAllowedTypes}}" data-max-file="{{.AttachmentMaxFiles}}" data-max-size="{{.AttachmentMaxSize}}" data-default-message="{{.i18n.Tr "dropzone.default_message"}}" data-invalid-input-type="{{.i18n.Tr "dropzone.invalid_input_type"}}" data-file-too-big="{{.i18n.Tr "dropzone.file_too_big"}}" data-remove-file="{{.i18n.Tr "dropzone.remove_file"}}"></div> <div class="ui basic button dropzone" id="dropzone" data-upload-url="{{AppSubUrl}}/issues/attachments" data-accepts="{{.AttachmentAllowedTypes}}" data-max-file="{{.AttachmentMaxFiles}}" data-max-size="{{.AttachmentMaxSize}}" data-default-message="{{.i18n.Tr "dropzone.default_message"}}" data-invalid-input-type="{{.i18n.Tr "dropzone.invalid_input_type"}}" data-file-too-big="{{.i18n.Tr "dropzone.file_too_big"}}" data-remove-file="{{.i18n.Tr "dropzone.remove_file"}}"></div>
{{end}} {{end}}

View File

@ -13,4 +13,4 @@
<a class="color" style="background-color:#bfdadc" data-color-hex="#bfdadc"></a> <a class="color" style="background-color:#bfdadc" data-color-hex="#bfdadc"></a>
<a class="color" style="background-color:#c7def8" data-color-hex="#c7def8"></a> <a class="color" style="background-color:#c7def8" data-color-hex="#c7def8"></a>
<a class="color" style="background-color:#bfd4f2" data-color-hex="#bfd4f2"></a> <a class="color" style="background-color:#bfd4f2" data-color-hex="#bfd4f2"></a>
<a class="color" style="background-color:#d4c5f9" data-color-hex="#d4c5f9"></a> <a class="color" style="background-color:#d4c5f9" data-color-hex="#d4c5f9"></a>

View File

@ -5,9 +5,9 @@
<div class="navbar"> <div class="navbar">
{{template "repo/issue/navbar" .}} {{template "repo/issue/navbar" .}}
{{if .IsRepositoryAdmin}} {{if .IsRepositoryAdmin}}
<div class="ui right"> <div class="ui right">
<div class="ui green new-label button">{{.i18n.Tr "repo.issues.new_label"}}</div> <div class="ui green new-label button">{{.i18n.Tr "repo.issues.new_label"}}</div>
</div> </div>
{{end}} {{end}}
</div> </div>
<div class="ui new-label segment hide"> <div class="ui new-label segment hide">
@ -16,11 +16,11 @@
<div class="ui grid"> <div class="ui grid">
<div class="five wide column"> <div class="five wide column">
<div class="ui small input"> <div class="ui small input">
<input class="new-label-input" name="title" placeholder="{{.i18n.Tr "repo.issues.new_label_placeholder"}}" autofocus required> <input class="new-label-input" name="title" placeholder="{{.i18n.Tr "repo.issues.new_label_placeholder"}}" autofocus required>
</div> </div>
</div> </div>
<div class="color picker column"> <div class="color picker column">
<input class="color-picker" name="color" value="#70c24a" required> <input class="color-picker" name="color" value="#70c24a" required>
</div> </div>
<div class="column precolors"> <div class="column precolors">
{{template "repo/issue/label_precolors"}} {{template "repo/issue/label_precolors"}}
@ -38,72 +38,72 @@
<div class="label list"> <div class="label list">
{{range .Labels}} {{range .Labels}}
<li class="item"> <li class="item">
<div class="ui label" style="background-color: {{.Color}}"><i class="octicon octicon-tag"></i> {{.Name}}</div> <div class="ui label" style="background-color: {{.Color}}"><i class="octicon octicon-tag"></i> {{.Name}}</div>
{{if $.IsRepositoryAdmin}} {{if $.IsRepositoryAdmin}}
<a class="ui right delete-button" href="#" data-url="{{$.RepoLink}}/labels/delete" data-id="{{.ID}}"><i class="octicon octicon-trashcan"></i> {{$.i18n.Tr "repo.issues.label_delete"}}</a> <a class="ui right delete-button" href="#" data-url="{{$.RepoLink}}/labels/delete" data-id="{{.ID}}"><i class="octicon octicon-trashcan"></i> {{$.i18n.Tr "repo.issues.label_delete"}}</a>
<a class="ui right edit-label-button" href="#" data-id={{.ID}} data-title={{.Name}} data-color={{.Color}}><i class="octicon octicon-pencil"></i> {{$.i18n.Tr "repo.issues.label_edit"}}</a> <a class="ui right edit-label-button" href="#" data-id={{.ID}} data-title={{.Name}} data-color={{.Color}}><i class="octicon octicon-pencil"></i> {{$.i18n.Tr "repo.issues.label_edit"}}</a>
{{end}} {{end}}
<a class="ui right open-issues" href="{{$.RepoLink}}/issues?labels={{.ID}}"><i class="octicon octicon-issue-opened"></i> {{$.i18n.Tr "repo.issues.label_open_issues" .NumOpenIssues}}</a> <a class="ui right open-issues" href="{{$.RepoLink}}/issues?labels={{.ID}}"><i class="octicon octicon-issue-opened"></i> {{$.i18n.Tr "repo.issues.label_open_issues" .NumOpenIssues}}</a>
</li> </li>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
{{if .IsRepositoryAdmin}} {{if .IsRepositoryAdmin}}
<div class="ui small basic delete modal"> <div class="ui small basic delete modal">
<div class="ui icon header"> <div class="ui icon header">
<i class="trash icon"></i> <i class="trash icon"></i>
{{.i18n.Tr "repo.issues.label_deletion"}} {{.i18n.Tr "repo.issues.label_deletion"}}
</div> </div>
<div class="content"> <div class="content">
<p>{{.i18n.Tr "repo.issues.label_deletion_desc"}}</p> <p>{{.i18n.Tr "repo.issues.label_deletion_desc"}}</p>
</div> </div>
<div class="actions"> <div class="actions">
<div class="ui red basic inverted cancel button"> <div class="ui red basic inverted cancel button">
<i class="remove icon"></i> <i class="remove icon"></i>
{{.i18n.Tr "modal.no"}} {{.i18n.Tr "modal.no"}}
</div> </div>
<div class="ui green basic inverted ok button"> <div class="ui green basic inverted ok button">
<i class="checkmark icon"></i> <i class="checkmark icon"></i>
{{.i18n.Tr "modal.yes"}} {{.i18n.Tr "modal.yes"}}
</div> </div>
</div> </div>
</div> </div>
<div class="ui small edit-label modal"> <div class="ui small edit-label modal">
<div class="header"> <div class="header">
{{.i18n.Tr "repo.issues.label_modify"}} {{.i18n.Tr "repo.issues.label_modify"}}
</div> </div>
<div class="content"> <div class="content">
<form class="ui edit-label form" action="{{$.RepoLink}}/labels/edit" method="post"> <form class="ui edit-label form" action="{{$.RepoLink}}/labels/edit" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<input id="label-modal-id" name="id" type="hidden"> <input id="label-modal-id" name="id" type="hidden">
<div class="ui grid"> <div class="ui grid">
<div class="five wide column"> <div class="five wide column">
<div class="ui small input"> <div class="ui small input">
<input class="new-label-input" name="title" placeholder="{{.i18n.Tr "repo.issues.new_label_placeholder"}}" autofocus required> <input class="new-label-input" name="title" placeholder="{{.i18n.Tr "repo.issues.new_label_placeholder"}}" autofocus required>
</div>
</div>
<div class="color picker column">
<input class="color-picker" name="color" value="#70c24a" required>
</div>
<div class="column precolors">
{{template "repo/issue/label_precolors"}}
</div> </div>
</div> </div>
<div class="color picker column"> </form>
<input class="color-picker" name="color" value="#70c24a" required> </div>
</div> <div class="actions">
<div class="column precolors"> <div class="ui negative button">
{{template "repo/issue/label_precolors"}} {{.i18n.Tr "modal.no"}}
</div>
</div> </div>
</form> <div class="ui positive right labeled icon button">
</div> {{.i18n.Tr "modal.modify"}}
<div class="actions"> <i class="checkmark icon"></i>
<div class="ui negative button"> </div>
{{.i18n.Tr "modal.no"}} </div>
</div> </div>
<div class="ui positive right labeled icon button">
{{.i18n.Tr "modal.modify"}}
<i class="checkmark icon"></i>
</div>
</div>
</div>
{{end}} {{end}}
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -6,22 +6,22 @@
{{template "repo/issue/navbar" .}} {{template "repo/issue/navbar" .}}
<div class="ui right"> <div class="ui right">
{{if .PageIsIssueList}} {{if .PageIsIssueList}}
<a class="ui green button" href="{{.RepoLink}}/issues/new">{{.i18n.Tr "repo.issues.new"}}</a> <a class="ui green button" href="{{.RepoLink}}/issues/new">{{.i18n.Tr "repo.issues.new"}}</a>
{{else}} {{else}}
<a class="ui green button {{if not .HasForkedRepo}}disabled{{end}}" href="{{.RepoLink}}/compare/{{.BranchName}}...{{.SignedUserName}}:{{.BranchName}}">{{.i18n.Tr "repo.pulls.new"}}</a> <a class="ui green button {{if not .HasForkedRepo}}disabled{{end}}" href="{{.RepoLink}}/compare/{{.BranchName}}...{{.SignedUserName}}:{{.BranchName}}">{{.i18n.Tr "repo.pulls.new"}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="ui tiny basic status buttons"> <div class="ui tiny basic status buttons">
<a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state=open&labels={{.SelectLabels}}&milestone={{.MilestoneID}}&assignee={{.AssigneeID}}"> <a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state=open&labels={{.SelectLabels}}&milestone={{.MilestoneID}}&assignee={{.AssigneeID}}">
<i class="octicon octicon-issue-opened"></i> <i class="octicon octicon-issue-opened"></i>
{{.i18n.Tr "repo.issues.open_tab" .IssueStats.OpenCount}} {{.i18n.Tr "repo.issues.open_tab" .IssueStats.OpenCount}}
</a> </a>
<a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{$.Link}}?type={{.ViewType}}&sort={{$.SortType}}&state=closed&labels={{.SelectLabels}}&milestone={{.MilestoneID}}&assignee={{.AssigneeID}}"> <a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{$.Link}}?type={{.ViewType}}&sort={{$.SortType}}&state=closed&labels={{.SelectLabels}}&milestone={{.MilestoneID}}&assignee={{.AssigneeID}}">
<i class="octicon octicon-issue-closed"></i> <i class="octicon octicon-issue-closed"></i>
{{.i18n.Tr "repo.issues.close_tab" .IssueStats.ClosedCount}} {{.i18n.Tr "repo.issues.close_tab" .IssueStats.ClosedCount}}
</a> </a>
</div> </div>
<div class="ui right floated secondary filter menu"> <div class="ui right floated secondary filter menu">
<!-- Label --> <!-- Label -->
@ -30,11 +30,11 @@
{{.i18n.Tr "repo.issues.filter_label"}} {{.i18n.Tr "repo.issues.filter_label"}}
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
</span> </span>
<div class="menu"> <div class="menu">
<a class="item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_label_no_select"}}</a> <a class="item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_label_no_select"}}</a>
{{range .Labels}} {{range .Labels}}
<a class="item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.ID}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}"><span class="octicon {{if eq $.SelectLabels .ID}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a> <a class="item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.ID}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}"><span class="octicon {{if eq $.SelectLabels .ID}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
@ -44,11 +44,11 @@
{{.i18n.Tr "repo.issues.filter_milestone"}} {{.i18n.Tr "repo.issues.filter_milestone"}}
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
</span> </span>
<div class="menu"> <div class="menu">
<a class="item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_milestone_no_select"}}</a> <a class="item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_milestone_no_select"}}</a>
{{range .Milestones}} {{range .Milestones}}
<a class="{{if eq $.MilestoneID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.ID}}&assignee={{$.AssigneeID}}">{{.Name}}</a> <a class="{{if eq $.MilestoneID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.ID}}&assignee={{$.AssigneeID}}">{{.Name}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
@ -58,11 +58,11 @@
{{.i18n.Tr "repo.issues.filter_assignee"}} {{.i18n.Tr "repo.issues.filter_assignee"}}
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
</span> </span>
<div class="menu"> <div class="menu">
<a class="item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}">{{.i18n.Tr "repo.issues.filter_assginee_no_select"}}</a> <a class="item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}">{{.i18n.Tr "repo.issues.filter_assginee_no_select"}}</a>
{{range .Assignees}} {{range .Assignees}}
<a class="{{if eq $.AssigneeID .Id}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{.Id}}"><img src="{{.AvatarLink}}"> {{.Name}}</a> <a class="{{if eq $.AssigneeID .Id}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{.Id}}"><img src="{{.AvatarLink}}"> {{.Name}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
@ -72,11 +72,11 @@
{{.i18n.Tr "repo.issues.filter_type"}} {{.i18n.Tr "repo.issues.filter_type"}}
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
</span> </span>
<div class="menu"> <div class="menu">
<a class="{{if eq .ViewType "all"}}active{{end}} item" href="{{$.Link}}?type=all&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.all_issues"}}</a> <a class="{{if eq .ViewType "all"}}active{{end}} item" href="{{$.Link}}?type=all&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.all_issues"}}</a>
<a class="{{if eq .ViewType "assigned"}}active{{end}} item" href="{{$.Link}}?type=assigned&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}">{{.i18n.Tr "repo.issues.filter_type.assigned_to_you"}}</a> <a class="{{if eq .ViewType "assigned"}}active{{end}} item" href="{{$.Link}}?type=assigned&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}">{{.i18n.Tr "repo.issues.filter_type.assigned_to_you"}}</a>
<a class="{{if eq .ViewType "created_by"}}active{{end}} item" href="{{$.Link}}?type=created_by&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.created_by_you"}}</a> <a class="{{if eq .ViewType "created_by"}}active{{end}} item" href="{{$.Link}}?type=created_by&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.created_by_you"}}</a>
<a class="{{if eq .ViewType "mentioned"}}active{{end}} item" href="{{$.Link}}?type=mentioned&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.mentioning_you"}}</a> <a class="{{if eq .ViewType "mentioned"}}active{{end}} item" href="{{$.Link}}?type=mentioned&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_type.mentioning_you"}}</a>
</div> </div>
</div> </div>
@ -86,68 +86,68 @@
{{.i18n.Tr "repo.issues.filter_sort"}} {{.i18n.Tr "repo.issues.filter_sort"}}
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
</span> </span>
<div class="menu"> <div class="menu">
<a class="{{if or (eq .SortType "latest") (not .SortType)}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=latest&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.latest"}}</a> <a class="{{if or (eq .SortType "latest") (not .SortType)}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=latest&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.latest"}}</a>
<a class="{{if eq .SortType "oldest"}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=oldest&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a> <a class="{{if eq .SortType "oldest"}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=oldest&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a>
<a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=recentupdate&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a> <a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=recentupdate&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a>
<a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=leastupdate&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a> <a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=leastupdate&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a>
<a class="{{if eq .SortType "mostcomment"}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=mostcomment&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.mostcomment"}}</a> <a class="{{if eq .SortType "mostcomment"}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=mostcomment&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.mostcomment"}}</a>
<a class="{{if eq .SortType "leastcomment"}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=leastcomment&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.leastcomment"}}</a> <a class="{{if eq .SortType "leastcomment"}}active{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort=leastcomment&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_sort.leastcomment"}}</a>
</div> </div>
</div> </div>
</div> </div>
<div class="issue list"> <div class="issue list">
{{range .Issues}} {{range .Issues}}
{{ $timeStr:= TimeSince .Created $.Lang }} {{ $timeStr:= TimeSince .Created $.Lang }}
<li class="item"> <li class="item">
<div class="ui {{if .IsRead}}black{{else}}green{{end}} label">#{{.Index}}</div> <div class="ui {{if .IsRead}}black{{else}}green{{end}} label">#{{.Index}}</div>
<a class="title" href="{{$.Link}}/{{.Index}}">{{.Name}}</a> <a class="title" href="{{$.Link}}/{{.Index}}">{{.Name}}</a>
{{range .Labels}} {{range .Labels}}
<a class="ui label" href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{.ID}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}" style="background-color: {{.Color}}">{{.Name}}</a> <a class="ui label" href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{.ID}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}" style="background-color: {{.Color}}">{{.Name}}</a>
{{end}}
{{if .NumComments}}
<span class="comment ui right"><i class="octicon octicon-comment"></i> {{.NumComments}}</span>
{{end}}
<p class="desc">
{{$.i18n.Tr "repo.issues.opened_by" $timeStr .Poster.HomeLink .Poster.Name | Safe}}
{{if .Milestone}}
<a class="milestone" href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.Milestone.ID}}&assignee={{$.AssigneeID}}">
<span class="octicon octicon-milestone"></span> {{.Milestone.Name}}
</a>
{{end}}
{{if .Assignee}}
<a class="ui right assignee poping up" href="{{.Assignee.HomeLink}}" data-content="{{.Assignee.Name}}" data-variation="inverted" data-position="left center">
<img class="ui avatar image" src="{{.Assignee.AvatarLink}}">
</a>
{{end}}
</p>
</li>
{{end}}
{{with .Page}}
{{if gt .TotalPages 1}}
<div class="center page buttons">
<div class="ui borderless pagination menu">
<a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}&page={{.Previous}}"{{end}}>
<i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
</a>
{{range .Pages}}
{{if eq .Num -1}}
<a class="disabled item">...</a>
{{else}}
<a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}&page={{.Num}}"{{end}}>{{.Num}}</a>
{{end}} {{end}}
{{if .NumComments}}
<span class="comment ui right"><i class="octicon octicon-comment"></i> {{.NumComments}}</span>
{{end}} {{end}}
<a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}&page={{.Next}}"{{end}}>
{{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i> <p class="desc">
</a> {{$.i18n.Tr "repo.issues.opened_by" $timeStr .Poster.HomeLink .Poster.Name | Safe}}
</div> {{if .Milestone}}
</div> <a class="milestone" href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.Milestone.ID}}&assignee={{$.AssigneeID}}">
<span class="octicon octicon-milestone"></span> {{.Milestone.Name}}
</a>
{{end}}
{{if .Assignee}}
<a class="ui right assignee poping up" href="{{.Assignee.HomeLink}}" data-content="{{.Assignee.Name}}" data-variation="inverted" data-position="left center">
<img class="ui avatar image" src="{{.Assignee.AvatarLink}}">
</a>
{{end}}
</p>
</li>
{{end}} {{end}}
{{with .Page}}
{{if gt .TotalPages 1}}
<div class="center page buttons">
<div class="ui borderless pagination menu">
<a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}&page={{.Previous}}"{{end}}>
<i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
</a>
{{range .Pages}}
{{if eq .Num -1}}
<a class="disabled item">...</a>
{{else}}
<a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}&page={{.Num}}"{{end}}>{{.Num}}</a>
{{end}}
{{end}}
<a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}&page={{.Next}}"{{end}}>
{{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i>
</a>
</div>
</div>
{{end}}
{{end}} {{end}}
</div> </div>
</div> </div>

View File

@ -5,64 +5,64 @@
<div class="navbar"> <div class="navbar">
{{template "repo/issue/navbar" .}} {{template "repo/issue/navbar" .}}
{{if and .IsRepositoryAdmin .PageIsEditMilestone}} {{if and .IsRepositoryAdmin .PageIsEditMilestone}}
<div class="ui right floated secondary menu"> <div class="ui right floated secondary menu">
<a class="ui green button" href="{{$.RepoLink}}/milestones/new">{{.i18n.Tr "repo.milestones.new"}}</a> <a class="ui green button" href="{{$.RepoLink}}/milestones/new">{{.i18n.Tr "repo.milestones.new"}}</a>
</div> </div>
{{end}} {{end}}
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<h2 class="ui dividing header"> <h2 class="ui dividing header">
{{if .PageIsEditMilestone}} {{if .PageIsEditMilestone}}
{{.i18n.Tr "repo.milestones.edit"}} {{.i18n.Tr "repo.milestones.edit"}}
<div class="sub header">{{.i18n.Tr "repo.milestones.edit_subheader"}}</div> <div class="sub header">{{.i18n.Tr "repo.milestones.edit_subheader"}}</div>
{{else}} {{else}}
{{.i18n.Tr "repo.milestones.new"}} {{.i18n.Tr "repo.milestones.new"}}
<div class="sub header">{{.i18n.Tr "repo.milestones.new_subheader"}}</div> <div class="sub header">{{.i18n.Tr "repo.milestones.new_subheader"}}</div>
{{end}} {{end}}
</h2> </h2>
{{template "base/alert" .}} {{template "base/alert" .}}
<form class="ui form grid" action="{{.Link}}" method="post"> <form class="ui form grid" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<div class="eleven wide column"> <div class="eleven wide column">
<div class="field {{if .Err_Title}}error{{end}}"> <div class="field {{if .Err_Title}}error{{end}}">
<label>{{.i18n.Tr "repo.milestones.title"}}</label> <label>{{.i18n.Tr "repo.milestones.title"}}</label>
<input name="title" placeholder="{{.i18n.Tr "repo.milestones.title"}}" value="{{.title}}" autofocus required> <input name="title" placeholder="{{.i18n.Tr "repo.milestones.title"}}" value="{{.title}}" autofocus required>
</div>
<div class="field">
<label>{{.i18n.Tr "repo.milestones.desc"}}</label>
<textarea name="content">{{.content}}</textarea>
</div>
</div> </div>
<div class="four wide column"> <div class="field">
<div class="field {{if .Err_Deadline}}error{{end}}"> <label>{{.i18n.Tr "repo.milestones.desc"}}</label>
<label> <textarea name="content">{{.content}}</textarea>
{{.i18n.Tr "repo.milestones.due_date"}}
<a id="clear-date" href="#">{{.i18n.Tr "repo.milestones.clear"}}</a>
</label>
<input id="deadline" name="deadline" value="{{.deadline}}">
</div>
<div class="field">
<input class="milestone datepicker" data-lang="{{.DateLang}}" data-start-date="{{.deadline}}">
</div>
</div> </div>
<div class="ui container"> </div>
<div class="ui divider"></div> <div class="four wide column">
<div class="ui right"> <div class="field {{if .Err_Deadline}}error{{end}}">
{{if .PageIsEditMilestone}} <label>
{{.i18n.Tr "repo.milestones.due_date"}}
<a id="clear-date" href="#">{{.i18n.Tr "repo.milestones.clear"}}</a>
</label>
<input id="deadline" name="deadline" value="{{.deadline}}">
</div>
<div class="field">
<input class="milestone datepicker" data-lang="{{.DateLang}}" data-start-date="{{.deadline}}">
</div>
</div>
<div class="ui container">
<div class="ui divider"></div>
<div class="ui right">
{{if .PageIsEditMilestone}}
<a class="ui blue basic button" href="{{.RepoLink}}/milestones"> <a class="ui blue basic button" href="{{.RepoLink}}/milestones">
{{.i18n.Tr "repo.milestones.cancel"}} {{.i18n.Tr "repo.milestones.cancel"}}
</a> </a>
<button class="ui green button"> <button class="ui green button">
{{.i18n.Tr "repo.milestones.modify"}} {{.i18n.Tr "repo.milestones.modify"}}
</button> </button>
{{else}} {{else}}
<button class="ui green button"> <button class="ui green button">
{{.i18n.Tr "repo.milestones.create"}} {{.i18n.Tr "repo.milestones.create"}}
</button> </button>
{{end}} {{end}}
</div>
</div> </div>
</form> </div>
</form>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -5,113 +5,113 @@
<div class="navbar"> <div class="navbar">
{{template "repo/issue/navbar" .}} {{template "repo/issue/navbar" .}}
{{if .IsRepositoryAdmin}} {{if .IsRepositoryAdmin}}
<div class="ui right"> <div class="ui right">
<a class="ui green button" href="{{$.Link}}/new">{{.i18n.Tr "repo.milestones.new"}}</a> <a class="ui green button" href="{{$.Link}}/new">{{.i18n.Tr "repo.milestones.new"}}</a>
</div> </div>
{{end}} {{end}}
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
{{template "base/alert" .}} {{template "base/alert" .}}
<div class="ui tiny basic buttons"> <div class="ui tiny basic buttons">
<a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{.RepoLink}}/milestones?state=open"> <a class="ui {{if not .IsShowClosed}}green active{{end}} basic button" href="{{.RepoLink}}/milestones?state=open">
<i class="octicon octicon-milestone"></i> <i class="octicon octicon-milestone"></i>
{{.i18n.Tr "repo.milestones.open_tab" .OpenCount}} {{.i18n.Tr "repo.milestones.open_tab" .OpenCount}}
</a> </a>
<a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{.RepoLink}}/milestones?state=closed"> <a class="ui {{if .IsShowClosed}}red active{{end}} basic button" href="{{.RepoLink}}/milestones?state=closed">
<i class="octicon octicon-milestone"></i> <i class="octicon octicon-milestone"></i>
{{.i18n.Tr "repo.milestones.close_tab" .ClosedCount}} {{.i18n.Tr "repo.milestones.close_tab" .ClosedCount}}
</a> </a>
</div> </div>
<div class="milestone list"> <div class="milestone list">
{{range .Milestones}} {{range .Milestones}}
<li class="item"> <li class="item">
<i class="octicon octicon-milestone"></i> <a href="{{$.RepoLink}}/issues?state={{$.State}}&milestone={{.ID}}">{{.Name}}</a> <i class="octicon octicon-milestone"></i> <a href="{{$.RepoLink}}/issues?state={{$.State}}&milestone={{.ID}}">{{.Name}}</a>
<div class="ui right green progress" data-percent="{{.Completeness}}"> <div class="ui right green progress" data-percent="{{.Completeness}}">
<div class="bar" {{if not .Completeness}}style="background-color: transparent"{{end}}> <div class="bar" {{if not .Completeness}}style="background-color: transparent"{{end}}>
<div class="progress"></div> <div class="progress"></div>
</div> </div>
</div> </div>
<div class="meta"> <div class="meta">
{{ $closedDate:= TimeSince .ClosedDate $.Lang }} {{ $closedDate:= TimeSince .ClosedDate $.Lang }}
{{if .IsClosed}} {{if .IsClosed}}
<span class="octicon octicon-clock"></span> {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}} <span class="octicon octicon-clock"></span> {{$.i18n.Tr "repo.milestones.closed" $closedDate|Str2html}}
{{else}}
<span class="octicon octicon-calendar"></span>
{{if .DeadlineString}}
<span {{if .IsOverDue}}class="overdue"{{end}}>{{.DeadlineString}}</span>
{{else}} {{else}}
{{$.i18n.Tr "repo.milestones.no_due_date"}} <span class="octicon octicon-calendar"></span>
{{if .DeadlineString}}
<span {{if .IsOverDue}}class="overdue"{{end}}>{{.DeadlineString}}</span>
{{else}}
{{$.i18n.Tr "repo.milestones.no_due_date"}}
{{end}}
{{end}}
<span class="issue-stats">
<i class="octicon octicon-issue-opened"></i> {{$.i18n.Tr "repo.issues.open_tab" .NumOpenIssues}}
<i class="octicon octicon-issue-closed"></i> {{$.i18n.Tr "repo.issues.close_tab" .NumClosedIssues}}
</span>
</div>
{{if $.IsRepositoryAdmin}}
<div class="ui right operate">
<a href="{{$.Link}}/{{.ID}}/edit" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-pencil"></i> {{$.i18n.Tr "repo.issues.label_edit"}}</a>
{{if .IsClosed}}
<a href="{{$.Link}}/{{.ID}}/open" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-check"></i> {{$.i18n.Tr "repo.milestones.open"}}</a>
{{else}}
<a href="{{$.Link}}/{{.ID}}/close" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-x"></i> {{$.i18n.Tr "repo.milestones.close"}}</a>
{{end}}
<a class="delete-button" href="#" data-url="{{$.RepoLink}}/milestones/delete" data-id="{{.ID}}"><i class="octicon octicon-trashcan"></i> {{$.i18n.Tr "repo.issues.label_delete"}}</a>
</div>
{{if .Content}}
<div class="content">
{{.RenderedContent|Str2html}}
</div>
{{end}} {{end}}
{{end}} {{end}}
<span class="issue-stats"> </li>
<i class="octicon octicon-issue-opened"></i> {{$.i18n.Tr "repo.issues.open_tab" .NumOpenIssues}}
<i class="octicon octicon-issue-closed"></i> {{$.i18n.Tr "repo.issues.close_tab" .NumClosedIssues}}
</span>
</div>
{{if $.IsRepositoryAdmin}}
<div class="ui right operate">
<a href="{{$.Link}}/{{.ID}}/edit" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-pencil"></i> {{$.i18n.Tr "repo.issues.label_edit"}}</a>
{{if .IsClosed}}
<a href="{{$.Link}}/{{.ID}}/open" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-check"></i> {{$.i18n.Tr "repo.milestones.open"}}</a>
{{else}}
<a href="{{$.Link}}/{{.ID}}/close" data-id={{.ID}} data-title={{.Name}}><i class="octicon octicon-x"></i> {{$.i18n.Tr "repo.milestones.close"}}</a>
{{end}}
<a class="delete-button" href="#" data-url="{{$.RepoLink}}/milestones/delete" data-id="{{.ID}}"><i class="octicon octicon-trashcan"></i> {{$.i18n.Tr "repo.issues.label_delete"}}</a>
</div>
{{if .Content}}
<div class="content">
{{.RenderedContent|Str2html}}
</div>
{{end}}
{{end}}
</li>
{{end}} {{end}}
{{with .Page}} {{with .Page}}
{{if gt .TotalPages 1}} {{if gt .TotalPages 1}}
<div class="center page buttons"> <div class="center page buttons">
<div class="ui borderless pagination menu"> <div class="ui borderless pagination menu">
<a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?state={{$.State}}&page={{.Previous}}"{{end}}> <a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?state={{$.State}}&page={{.Previous}}"{{end}}>
<i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}} <i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
</a> </a>
{{range .Pages}} {{range .Pages}}
{{if eq .Num -1}} {{if eq .Num -1}}
<a class="disabled item">...</a> <a class="disabled item">...</a>
{{else}} {{else}}
<a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?state={{$.State}}&page={{.Num}}"{{end}}>{{.Num}}</a> <a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?state={{$.State}}&page={{.Num}}"{{end}}>{{.Num}}</a>
{{end}} {{end}}
{{end}} {{end}}
<a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?state={{$.State}}&page={{.Next}}"{{end}}> <a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?state={{$.State}}&page={{.Next}}"{{end}}>
{{$.i18n.Tr "repo.issues.next"}} <i class="icon right arrow"></i> {{$.i18n.Tr "repo.issues.next"}} <i class="icon right arrow"></i>
</a> </a>
</div> </div>
</div> </div>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
{{if .IsRepositoryAdmin}} {{if .IsRepositoryAdmin}}
<div class="ui small basic delete modal"> <div class="ui small basic delete modal">
<div class="ui icon header"> <div class="ui icon header">
<i class="trash icon"></i> <i class="trash icon"></i>
{{.i18n.Tr "repo.milestones.deletion"}} {{.i18n.Tr "repo.milestones.deletion"}}
</div> </div>
<div class="content"> <div class="content">
<p>{{.i18n.Tr "repo.milestones.deletion_desc"}}</p> <p>{{.i18n.Tr "repo.milestones.deletion_desc"}}</p>
</div> </div>
<div class="actions"> <div class="actions">
<div class="ui red basic inverted cancel button"> <div class="ui red basic inverted cancel button">
<i class="remove icon"></i> <i class="remove icon"></i>
{{.i18n.Tr "modal.no"}} {{.i18n.Tr "modal.no"}}
</div> </div>
<div class="ui green basic inverted ok button"> <div class="ui green basic inverted ok button">
<i class="checkmark icon"></i> <i class="checkmark icon"></i>
{{.i18n.Tr "modal.yes"}} {{.i18n.Tr "modal.yes"}}
</div> </div>
</div> </div>
</div> </div>
{{end}} {{end}}
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,4 +1,4 @@
<div class="ui compact small menu"> <div class="ui compact small menu">
<a class="{{if .PageIsLabels}}active{{end}} item" href="{{.RepoLink}}/labels">{{.i18n.Tr "repo.labels"}}</a> <a class="{{if .PageIsLabels}}active{{end}} item" href="{{.RepoLink}}/labels">{{.i18n.Tr "repo.labels"}}</a>
<a class="{{if .PageIsMilestones}}active{{end}} item" href="{{.RepoLink}}/milestones">{{.i18n.Tr "repo.milestones"}}</a> <a class="{{if .PageIsMilestones}}active{{end}} item" href="{{.RepoLink}}/milestones">{{.i18n.Tr "repo.milestones"}}</a>
</div> </div>

View File

@ -9,4 +9,4 @@
{{template "repo/issue/new_form" .}} {{template "repo/issue/new_form" .}}
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,32 +1,32 @@
<form class="ui comment form grid" action="{{.Link}}" method="post"> <form class="ui comment form grid" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
{{if .Flash}} {{if .Flash}}
<div class="sixteen wide column"> <div class="sixteen wide column">
{{template "base/alert" .}} {{template "base/alert" .}}
</div> </div>
{{end}} {{end}}
<div class="twelve wide column"> <div class="twelve wide column">
<div class="ui comments"> <div class="ui comments">
<div class="comment"> <div class="comment">
<a class="avatar" href="{{.SignedUser.HomeLink}}"> <a class="avatar" href="{{.SignedUser.HomeLink}}">
<img src="{{.SignedUser.AvatarLink}}"> <img src="{{.SignedUser.AvatarLink}}">
</a> </a>
<div class="ui segment content"> <div class="ui segment content">
<div class="field"> <div class="field">
<input name="title" placeholder="{{.i18n.Tr "repo.milestones.title"}}" value="{{.title}}" tabindex="3" autofocus required> <input name="title" placeholder="{{.i18n.Tr "repo.milestones.title"}}" value="{{.title}}" tabindex="3" autofocus required>
</div> </div>
{{template "repo/issue/comment_tab" .}} {{template "repo/issue/comment_tab" .}}
<div class="text right"> <div class="text right">
<button class="ui green button"> <button class="ui green button">
{{if .PageIsComparePull}} {{if .PageIsComparePull}}
{{.i18n.Tr "repo.pulls.create"}} {{.i18n.Tr "repo.pulls.create"}}
{{else}} {{else}}
{{.i18n.Tr "repo.issues.create"}} {{.i18n.Tr "repo.issues.create"}}
{{end}} {{end}}
</button> </button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@ -38,18 +38,18 @@
<strong>{{.i18n.Tr "repo.issues.new.labels"}}</strong> <strong>{{.i18n.Tr "repo.issues.new.labels"}}</strong>
<span class="octicon octicon-gear"></span> <span class="octicon octicon-gear"></span>
</span> </span>
<div class="filter menu" data-id="#label_ids"> <div class="filter menu" data-id="#label_ids">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_labels"}}</div> <div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_labels"}}</div>
{{range .Labels}} {{range .Labels}}
<a class="{{if .IsChecked}}checked{{end}} item" href="#" data-id="{{.ID}}" data-id-selector="#label_{{.ID}}"><span class="octicon {{if .IsChecked}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a> <a class="{{if .IsChecked}}checked{{end}} item" href="#" data-id="{{.ID}}" data-id-selector="#label_{{.ID}}"><span class="octicon {{if .IsChecked}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="ui labels list"> <div class="ui labels list">
<span class="no-select item {{if .HasSelectedLabel}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_label"}}</span> <span class="no-select item {{if .HasSelectedLabel}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_label"}}</span>
{{range .Labels}} {{range .Labels}}
<a class="{{if not .IsChecked}}hide{{end}} item" id="label_{{.ID}}" href="{{$.RepoLink}}/issues?labels={{.ID}}"><span class="label color" style="background-color: {{.Color}}"></span> <span class="text">{{.Name}}</span></a> <a class="{{if not .IsChecked}}hide{{end}} item" id="label_{{.ID}}" href="{{$.RepoLink}}/issues?labels={{.ID}}"><span class="label color" style="background-color: {{.Color}}"></span> <span class="text">{{.Name}}</span></a>
{{end}} {{end}}
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
@ -60,35 +60,35 @@
<strong>{{.i18n.Tr "repo.issues.new.milestone"}}</strong> <strong>{{.i18n.Tr "repo.issues.new.milestone"}}</strong>
<span class="octicon octicon-gear"></span> <span class="octicon octicon-gear"></span>
</span> </span>
<div class="menu"> <div class="menu">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_milestone"}}</div> <div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_milestone"}}</div>
{{if .OpenMilestones}} {{if .OpenMilestones}}
<div class="divider"></div> <div class="divider"></div>
<div class="header"> <div class="header">
<i class="octicon octicon-milestone"></i> <i class="octicon octicon-milestone"></i>
{{.i18n.Tr "repo.issues.new.open_milestone"}} {{.i18n.Tr "repo.issues.new.open_milestone"}}
</div> </div>
{{range .OpenMilestones}} {{range .OpenMilestones}}
<div class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</div> <div class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</div>
{{end}} {{end}}
{{end}} {{end}}
{{if .ClosedMilestones}} {{if .ClosedMilestones}}
<div class="divider"></div> <div class="divider"></div>
<div class="header"> <div class="header">
<i class="octicon octicon-milestone"></i> <i class="octicon octicon-milestone"></i>
{{.i18n.Tr "repo.issues.new.closed_milestone"}} {{.i18n.Tr "repo.issues.new.closed_milestone"}}
</div> </div>
{{range .ClosedMilestones}} {{range .ClosedMilestones}}
<a class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</a> <a class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</a>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="ui select-milestone list"> <div class="ui select-milestone list">
<span class="no-select item {{if .Milestone}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_milestone"}}</span> <span class="no-select item {{if .Milestone}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_milestone"}}</span>
<div class="selected"> <div class="selected">
{{if .Milestone}} {{if .Milestone}}
<a class="item" href="{{.RepoLink}}/issues?milestone={{.Milestone.ID}}"> {{.Milestone.Name}}</a> <a class="item" href="{{.RepoLink}}/issues?milestone={{.Milestone.ID}}"> {{.Milestone.Name}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
@ -101,21 +101,21 @@
<strong>{{.i18n.Tr "repo.issues.new.assignee"}}</strong> <strong>{{.i18n.Tr "repo.issues.new.assignee"}}</strong>
<span class="octicon octicon-gear"></span> <span class="octicon octicon-gear"></span>
</span> </span>
<div class="menu"> <div class="menu">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_assignee"}}</div> <div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_assignee"}}</div>
{{range .Assignees}} {{range .Assignees}}
<div class="item" data-id="{{.Id}}" data-href="{{$.RepoLink}}/issues?assignee={{.Id}}" data-avatar="{{.AvatarLink}}"><img src="{{.AvatarLink}}"> {{.Name}}</div> <div class="item" data-id="{{.Id}}" data-href="{{$.RepoLink}}/issues?assignee={{.Id}}" data-avatar="{{.AvatarLink}}"><img src="{{.AvatarLink}}"> {{.Name}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="ui select-assignee list"> <div class="ui select-assignee list">
<span class="no-select item {{if .Assignee}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_assignee"}}</span> <span class="no-select item {{if .Assignee}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_assignee"}}</span>
<div class="selected"> <div class="selected">
{{if .Assignee}} {{if .Assignee}}
<a class="item" href="{{.RepoLink}}/issues?assignee={{.Assignee.Id}}"><img class="ui avatar image" src="{{.Assignee.AvatarLink}}"> {{.Assignee.Name}}</a> <a class="item" href="{{.RepoLink}}/issues?assignee={{.Assignee.Id}}"><img class="ui avatar image" src="{{.Assignee.AvatarLink}}"> {{.Assignee.Name}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</form> </form>

View File

@ -6,22 +6,22 @@
{{template "repo/issue/navbar" .}} {{template "repo/issue/navbar" .}}
<div class="ui right"> <div class="ui right">
{{if .PageIsIssueList}} {{if .PageIsIssueList}}
<a class="ui green button" href="{{.RepoLink}}/issues/new">{{.i18n.Tr "repo.issues.new"}}</a> <a class="ui green button" href="{{.RepoLink}}/issues/new">{{.i18n.Tr "repo.issues.new"}}</a>
{{else}} {{else}}
<a class="ui green button {{if not .HasForkedRepo}}disabled{{end}}" href="{{.RepoLink}}/compare/{{.BranchName}}...{{.SignedUserName}}:{{.BranchName}}">{{.i18n.Tr "repo.pulls.new"}}</a> <a class="ui green button {{if not .HasForkedRepo}}disabled{{end}}" href="{{.RepoLink}}/compare/{{.BranchName}}...{{.SignedUserName}}:{{.BranchName}}">{{.i18n.Tr "repo.pulls.new"}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
{{if .Issue.IsPull}} {{if .Issue.IsPull}}
{{template "repo/issue/view_title" .}} {{template "repo/issue/view_title" .}}
{{template "repo/pulls/tab_menu" .}} {{template "repo/pulls/tab_menu" .}}
<div class="ui bottom attached tab pull segment active" data-tab="request-{{.ID}}"> <div class="ui bottom attached tab pull segment active" data-tab="request-{{.ID}}">
{{template "repo/issue/view_content" .}} {{template "repo/issue/view_content" .}}
</div> </div>
{{else}} {{else}}
{{template "repo/issue/view_content" .}} {{template "repo/issue/view_content" .}}
{{end}} {{end}}
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,234 +1,232 @@
<div class="ui grid"> <div class="ui grid">
{{if .Flash}} {{if .Flash}}
<div class="sixteen wide column"> <div class="sixteen wide column">
{{template "base/alert" .}} {{template "base/alert" .}}
</div> </div>
{{end}} {{end}}
{{if not .Issue.IsPull}} {{if not .Issue.IsPull}}
{{template "repo/issue/view_title" .}} {{template "repo/issue/view_title" .}}
{{end}} {{end}}
{{ $createdStr:= TimeSince .Issue.Created $.Lang }} {{ $createdStr:= TimeSince .Issue.Created $.Lang }}
<div class="twelve wide column comment-list"> <div class="twelve wide column comment-list">
<ui class="ui comments"> <ui class="ui comments">
<div class="comment"> <div class="comment">
<a class="avatar" {{if gt .Issue.Poster.Id 0}}href="{{.Issue.Poster.HomeLink}}"{{end}}> <a class="avatar" {{if gt .Issue.Poster.Id 0}}href="{{.Issue.Poster.HomeLink}}"{{end}}>
<img src="{{.Issue.Poster.AvatarLink}}"> <img src="{{.Issue.Poster.AvatarLink}}">
</a> </a>
<div class="content"> <div class="content">
<div class="ui top attached header"> <div class="ui top attached header">
<span class="text grey"><a {{if gt .Issue.Poster.Id 0}}href="{{.Issue.Poster.HomeLink}}"{{end}}>{{.Issue.Poster.Name}}</a> {{.i18n.Tr "repo.issues.commented_at" .Issue.HashTag $createdStr | Safe}}</span> <span class="text grey"><a {{if gt .Issue.Poster.Id 0}}href="{{.Issue.Poster.HomeLink}}"{{end}}>{{.Issue.Poster.Name}}</a> {{.i18n.Tr "repo.issues.commented_at" .Issue.HashTag $createdStr | Safe}}</span>
<div class="ui right actions"> <div class="ui right actions">
{{if .IsIssueOwner}} {{if .IsIssueOwner}}
<a class="edit-content item" href="#"><i class="octicon octicon-pencil"></i></a> <a class="edit-content item" href="#"><i class="octicon octicon-pencil"></i></a>
{{end}} {{end}}
</div>
</div>
<div class="ui attached segment">
<div class="render-content markdown emojify">
{{if .Issue.RenderedContent}}
{{.Issue.RenderedContent|Str2html}}
{{else}}
<span class="no-content">{{.i18n.Tr "repo.issues.no_content"}}</span>
{{end}}
</div>
<div class="raw-content hide">{{.Issue.Content}}</div>
<div class="edit-content-zone hide" data-write="issue-{{.Issue.ID}}-write" data-preview="issue-{{.Issue.ID}}-preview" data-update-url="{{$.RepoLink}}/issues/{{.Issue.Index}}/content" data-context="{{.RepoLink}}"></div>
</div>
{{if .Issue.Attachments}}
<div class="ui bottom attached segment">
<div class="ui small images">
{{range .Issue.Attachments}}
<a target="_blank" href="{{AppSubUrl}}/attachments/{{.UUID}}"><img class="ui image" src="{{AppSubUrl}}/attachments/{{.UUID}}"></a>
{{end}}
</div> </div>
</div> </div>
{{end}} <div class="ui attached segment">
</div> <div class="render-content markdown emojify">
</div> {{if .Issue.RenderedContent}}
{{.Issue.RenderedContent|Str2html}}
{{range .Issue.Comments}} {{else}}
{{ $createdStr:= TimeSince .Created $.Lang }} <span class="no-content">{{.i18n.Tr "repo.issues.no_content"}}</span>
{{end}}
<!-- 0 = COMMENT, 1 = REOPEN, 2 = CLOSE, 3 = ISSUE_REF, 4 = COMMIT_REF, 5 = COMMENT_REF, 6 = PULL_REF --> </div>
{{if eq .Type 0}} <div class="raw-content hide">{{.Issue.Content}}</div>
<div class="comment"> <div class="edit-content-zone hide" data-write="issue-{{.Issue.ID}}-write" data-preview="issue-{{.Issue.ID}}-preview" data-update-url="{{$.RepoLink}}/issues/{{.Issue.Index}}/content" data-context="{{.RepoLink}}"></div>
<a class="avatar" {{if gt .Poster.Id 0}}href="{{.Poster.HomeLink}}"{{end}}>
<img src="{{.Poster.AvatarLink}}">
</a>
<div class="content">
<div class="ui top attached header">
<span class="text grey"><a {{if gt .Poster.Id 0}}href="{{.Poster.HomeLink}}"{{end}}>{{.Poster.Name}}</a> {{$.i18n.Tr "repo.issues.commented_at" .HashTag $createdStr | Safe}}</span>
<div class="ui right actions">
{{if gt .ShowTag 0}}
<div class="item tag">
{{if eq .ShowTag 1}}
{{$.i18n.Tr "repo.issues.poster"}}
{{else if eq .ShowTag 2}}
{{$.i18n.Tr "repo.issues.admin"}}
{{else if eq .ShowTag 3}}
{{$.i18n.Tr "repo.issues.owner"}}
{{end}}
</div>
{{end}}
{{if or $.IsRepositoryAdmin (eq .Poster.Id $.SignedUserID)}}
<a class="edit-content item" href="#"><i class="octicon octicon-pencil"></i></a>
{{end}}
</div>
</div> </div>
<div class="ui attached segment"> {{if .Issue.Attachments}}
<div class="render-content markdown emojify"> <div class="ui bottom attached segment">
{{if .RenderedContent}} <div class="ui small images">
{{.RenderedContent|Str2html}} {{range .Issue.Attachments}}
{{else}} <a target="_blank" href="{{AppSubUrl}}/attachments/{{.UUID}}"><img class="ui image" src="{{AppSubUrl}}/attachments/{{.UUID}}"></a>
<span class="no-content">{{$.i18n.Tr "repo.issues.no_content"}}</span> {{end}}
{{end}} </div>
</div> </div>
<div class="raw-content hide">{{.Content}}</div> {{end}}
<div class="edit-content-zone hide" data-write="issuecomment-{{.ID}}-write" data-preview="issuecomment-{{.ID}}-preview" data-update-url="{{$.RepoLink}}/comments/{{.ID}}" data-context="{{$.RepoLink}}"></div> </div>
</div> </div>
{{if .Attachments}}
<div class="ui bottom attached segment"> {{range .Issue.Comments}}
<div class="ui small images"> {{ $createdStr:= TimeSince .Created $.Lang }}
{{range .Attachments}}
<a target="_blank" href="{{AppSubUrl}}/attachments/{{.UUID}}"><img class="ui image" src="{{AppSubUrl}}/attachments/{{.UUID}}"></a> <!-- 0 = COMMENT, 1 = REOPEN, 2 = CLOSE, 3 = ISSUE_REF, 4 = COMMIT_REF, 5 = COMMENT_REF, 6 = PULL_REF -->
{{end}} {{if eq .Type 0}}
<div class="comment">
<a class="avatar" {{if gt .Poster.Id 0}}href="{{.Poster.HomeLink}}"{{end}}>
<img src="{{.Poster.AvatarLink}}">
</a>
<div class="content">
<div class="ui top attached header">
<span class="text grey"><a {{if gt .Poster.Id 0}}href="{{.Poster.HomeLink}}"{{end}}>{{.Poster.Name}}</a> {{$.i18n.Tr "repo.issues.commented_at" .HashTag $createdStr | Safe}}</span>
<div class="ui right actions">
{{if gt .ShowTag 0}}
<div class="item tag">
{{if eq .ShowTag 1}}
{{$.i18n.Tr "repo.issues.poster"}}
{{else if eq .ShowTag 2}}
{{$.i18n.Tr "repo.issues.admin"}}
{{else if eq .ShowTag 3}}
{{$.i18n.Tr "repo.issues.owner"}}
{{end}}
</div>
{{end}}
{{if or $.IsRepositoryAdmin (eq .Poster.Id $.SignedUserID)}}
<a class="edit-content item" href="#"><i class="octicon octicon-pencil"></i></a>
{{end}}
</div>
</div>
<div class="ui attached segment">
<div class="render-content markdown emojify">
{{if .RenderedContent}}
{{.RenderedContent|Str2html}}
{{else}}
<span class="no-content">{{$.i18n.Tr "repo.issues.no_content"}}</span>
{{end}}
</div>
<div class="raw-content hide">{{.Content}}</div>
<div class="edit-content-zone hide" data-write="issuecomment-{{.ID}}-write" data-preview="issuecomment-{{.ID}}-preview" data-update-url="{{$.RepoLink}}/comments/{{.ID}}" data-context="{{$.RepoLink}}"></div>
</div>
{{if .Attachments}}
<div class="ui bottom attached segment">
<div class="ui small images">
{{range .Attachments}}
<a target="_blank" href="{{AppSubUrl}}/attachments/{{.UUID}}"><img class="ui image" src="{{AppSubUrl}}/attachments/{{.UUID}}"></a>
{{end}}
</div>
</div>
{{end}}
</div> </div>
</div> </div>
{{end}} {{else if eq .Type 1}}
</div> <div class="event">
</div> <span class="octicon octicon-primitive-dot"></span>
{{else if eq .Type 1}} <a class="ui avatar image" href="{{.Poster.HomeLink}}">
<div class="event"> <img src="{{.Poster.AvatarLink}}">
<span class="octicon octicon-primitive-dot"></span> </a>
<a class="ui avatar image" href="{{.Poster.HomeLink}}"> <span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.Name}}</a> {{$.i18n.Tr "repo.issues.reopened_at" .EventTag $createdStr | Safe}}</span>
<img src="{{.Poster.AvatarLink}}"> </div>
</a> {{else if eq .Type 2}}
<span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.Name}}</a> {{$.i18n.Tr "repo.issues.reopened_at" .EventTag $createdStr | Safe}}</span> <div class="event">
</div> <span class="octicon octicon-circle-slash"></span>
{{else if eq .Type 2}} <a class="ui avatar image" href="{{.Poster.HomeLink}}">
<div class="event"> <img src="{{.Poster.AvatarLink}}">
<span class="octicon octicon-circle-slash"></span> </a>
<a class="ui avatar image" href="{{.Poster.HomeLink}}"> <span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.Name}}</a> {{$.i18n.Tr "repo.issues.closed_at" .EventTag $createdStr | Safe}}</span>
<img src="{{.Poster.AvatarLink}}"> </div>
</a> {{else if eq .Type 4}}
<span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.Name}}</a> {{$.i18n.Tr "repo.issues.closed_at" .EventTag $createdStr | Safe}}</span> <div class="event">
</div> <span class="octicon octicon-bookmark"></span>
{{else if eq .Type 4}} <a class="ui avatar image" href="{{.Poster.HomeLink}}">
<div class="event"> <img src="{{.Poster.AvatarLink}}">
<span class="octicon octicon-bookmark"></span> </a>
<a class="ui avatar image" href="{{.Poster.HomeLink}}"> <span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.Name}}</a> {{$.i18n.Tr "repo.issues.commit_ref_at" .EventTag $createdStr | Safe}}</span>
<img src="{{.Poster.AvatarLink}}">
</a> <div class="detail">
<span class="text grey"><a href="{{.Poster.HomeLink}}">{{.Poster.Name}}</a> {{$.i18n.Tr "repo.issues.commit_ref_at" .EventTag $createdStr | Safe}}</span> <span class="octicon octicon-git-commit"></span>
<span class="text grey">{{.Content | Str2html}}</span>
</div>
</div>
{{end}}
<div class="detail">
<span class="octicon octicon-git-commit"></span>
<span class="text grey">{{.Content | Str2html}}</span>
</div>
</div>
{{end}} {{end}}
{{end}} {{if .Issue.IsPull}}
<div class="comment merge box">
{{if .Issue.IsPull}} <a class="avatar text
<div class="comment merge box"> {{if .Issue.HasMerged}}purple
<a class="avatar text {{else if .Issue.IsClosed}}grey
{{if .Issue.HasMerged}}purple {{else if .IsPullReuqestBroken}}red
{{else if .Issue.IsClosed}}grey {{else if .Issue.IsChecking}}yellow
{{else if .IsPullReuqestBroken}}red {{else if .Issue.CanAutoMerge}}green
{{else if .Issue.IsChecking}}yellow {{else}}red{{end}}"><span class="mega-octicon octicon-git-merge"></span></a>
{{else if .Issue.CanAutoMerge}}green <div class="content">
{{else}}red{{end}}"> <div class="ui merge segment">
<span class="mega-octicon octicon-git-merge"></span> {{if .Issue.HasMerged}}
</a> <div class="item text purple">
<div class="content"> {{$.i18n.Tr "repo.pulls.has_merged"}}
<div class="ui merge segment"> </div>
{{if .Issue.HasMerged}} {{else if .Issue.IsClosed}}
<div class="item text purple"> <div class="item text grey">
{{$.i18n.Tr "repo.pulls.has_merged"}} {{$.i18n.Tr "repo.pulls.reopen_to_merge"}}
</div> </div>
{{else if .Issue.IsClosed}} {{else if .IsPullReuqestBroken}}
<div class="item text grey"> <div class="item text red">
{{$.i18n.Tr "repo.pulls.reopen_to_merge"}} <span class="octicon octicon-x"></span>
</div> {{$.i18n.Tr "repo.pulls.data_broken"}}
{{else if .IsPullReuqestBroken}} </div>
<div class="item text red"> {{else if .Issue.IsChecking}}
<span class="octicon octicon-x"></span> <div class="item text yellow">
{{$.i18n.Tr "repo.pulls.data_broken"}} <span class="octicon octicon-sync"></span>
</div> {{$.i18n.Tr "repo.pulls.is_checking"}}
{{else if .Issue.IsChecking}} </div>
<div class="item text yellow"> {{else if .Issue.CanAutoMerge}}
<span class="octicon octicon-sync"></span> <div class="item text green">
{{$.i18n.Tr "repo.pulls.is_checking"}} <span class="octicon octicon-check"></span>
</div> {{$.i18n.Tr "repo.pulls.can_auto_merge_desc"}}
{{else if .Issue.CanAutoMerge}} </div>
<div class="item text green"> {{if .IsRepositoryAdmin}}
<span class="octicon octicon-check"></span> <div class="ui divider"></div>
{{$.i18n.Tr "repo.pulls.can_auto_merge_desc"}} <div>
</div> <form class="ui form" action="{{.Link}}/merge" method="post">
{{if .IsRepositoryAdmin}} {{.CsrfTokenHtml}}
<div class="ui divider"></div> <button class="ui green button">
<div> <span class="octicon octicon-git-merge"></span> {{$.i18n.Tr "repo.pulls.merge_pull_request"}}
<form class="ui form" action="{{.Link}}/merge" method="post"> </button>
{{.CsrfTokenHtml}} </form>
<button class="ui green button"> </div>
<span class="octicon octicon-git-merge"></span> {{$.i18n.Tr "repo.pulls.merge_pull_request"}} {{end}}
</button> {{else}}
</form> <div class="item text red">
</div> <span class="octicon octicon-x"></span>
{{end}} {{$.i18n.Tr "repo.pulls.cannot_auto_merge_desc"}}
{{else}} </div>
<div class="item text red"> <div class="item text grey">
<span class="octicon octicon-x"></span> <span class="octicon octicon-info"></span>
{{$.i18n.Tr "repo.pulls.cannot_auto_merge_desc"}} {{$.i18n.Tr "repo.pulls.cannot_auto_merge_helper"}}
</div> </div>
<div class="item text grey"> {{end}}
<span class="octicon octicon-info"></span> </div>
{{$.i18n.Tr "repo.pulls.cannot_auto_merge_helper"}} </div>
</div> </div>
{{end}} {{end}}
</div>
</div>
</div>
{{end}}
{{if .IsSigned}} {{if .IsSigned}}
<div class="comment form"> <div class="comment form">
<a class="avatar" href="{{.SignedUser.HomeLink}}"> <a class="avatar" href="{{.SignedUser.HomeLink}}">
<img src="{{.SignedUser.AvatarLink}}"> <img src="{{.SignedUser.AvatarLink}}">
</a> </a>
<div class="content"> <div class="content">
<form class="ui segment form" id="comment-form" action="{{$.RepoLink}}/issues/{{.Issue.Index}}/comments" method="post"> <form class="ui segment form" id="comment-form" action="{{$.RepoLink}}/issues/{{.Issue.Index}}/comments" method="post">
{{template "repo/issue/comment_tab" .}} {{template "repo/issue/comment_tab" .}}
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<input id="status" name="status" type="hidden"> <input id="status" name="status" type="hidden">
<div class="text right"> <div class="text right">
{{if and .IsIssueOwner (not .DisableStatusChange)}} {{if and .IsIssueOwner (not .DisableStatusChange)}}
{{if .Issue.IsClosed}} {{if .Issue.IsClosed}}
<div id="status-button" class="ui green basic button" tabindex="6" data-status="{{.i18n.Tr "repo.issues.reopen_issue"}}" data-status-and-comment="{{.i18n.Tr "repo.issues.reopen_comment_issue"}}" data-status-val="reopen"> <div id="status-button" class="ui green basic button" tabindex="6" data-status="{{.i18n.Tr "repo.issues.reopen_issue"}}" data-status-and-comment="{{.i18n.Tr "repo.issues.reopen_comment_issue"}}" data-status-val="reopen">
{{.i18n.Tr "repo.issues.reopen_issue"}} {{.i18n.Tr "repo.issues.reopen_issue"}}
</div> </div>
{{else}} {{else}}
<div id="status-button" class="ui red basic button" tabindex="6" data-status="{{.i18n.Tr "repo.issues.close_issue"}}" data-status-and-comment="{{.i18n.Tr "repo.issues.close_comment_issue"}}" data-status-val="close"> <div id="status-button" class="ui red basic button" tabindex="6" data-status="{{.i18n.Tr "repo.issues.close_issue"}}" data-status-and-comment="{{.i18n.Tr "repo.issues.close_comment_issue"}}" data-status-val="close">
{{.i18n.Tr "repo.issues.close_issue"}} {{.i18n.Tr "repo.issues.close_issue"}}
</div> </div>
{{end}}
{{end}} {{end}}
{{end}} <button class="ui green button" tabindex="5">
<button class="ui green button" tabindex="5"> {{.i18n.Tr "repo.issues.create_comment"}}
{{.i18n.Tr "repo.issues.create_comment"}} </button>
</button> </div>
</div> </form>
</form> </div>
</div> </div>
</div> {{else}}
{{else}} <div class="ui warning message">
<div class="ui warning message"> <a href="{{AppSubUrl}}/user/sign_up" class="ui green button">{{.i18n.Tr "repo.issues.sign_up_for_free"}}</a>
<a href="{{AppSubUrl}}/user/sign_up" class="ui green button">{{.i18n.Tr "repo.issues.sign_up_for_free"}}</a> {{.i18n.Tr "repo.issues.sign_in_require_desc" .SignInLink | Safe}}
{{.i18n.Tr "repo.issues.sign_in_require_desc" .SignInLink | Safe}} </div>
</div> {{end}}
{{end}} </ui>
</ui>
</div> </div>
<div class="four wide column"> <div class="four wide column">
@ -238,18 +236,18 @@
<strong>{{.i18n.Tr "repo.issues.new.labels"}}</strong> <strong>{{.i18n.Tr "repo.issues.new.labels"}}</strong>
<span class="octicon octicon-gear"></span> <span class="octicon octicon-gear"></span>
</span> </span>
<div class="filter menu" data-action="update" data-update-url="{{$.RepoLink}}/issues/{{$.Issue.Index}}/label"> <div class="filter menu" data-action="update" data-update-url="{{$.RepoLink}}/issues/{{$.Issue.Index}}/label">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_labels"}}</div> <div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_labels"}}</div>
{{range .Labels}} {{range .Labels}}
<a class="{{if .IsChecked}}checked{{end}} item" href="#" data-id="{{.ID}}" data-id-selector="#label_{{.ID}}"><span class="octicon {{if .IsChecked}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a> <a class="{{if .IsChecked}}checked{{end}} item" href="#" data-id="{{.ID}}" data-id-selector="#label_{{.ID}}"><span class="octicon {{if .IsChecked}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="ui labels list"> <div class="ui labels list">
<span class="no-select item {{if .HasSelectedLabel}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_label"}}</span> <span class="no-select item {{if .HasSelectedLabel}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_label"}}</span>
{{range .Labels}} {{range .Labels}}
<a class="{{if not .IsChecked}}hide{{end}} item" id="label_{{.ID}}" href="{{$.RepoLink}}/issues?labels={{.ID}}"><span class="label color" style="background-color: {{.Color}}"></span> <span class="text">{{.Name}}</span></a> <a class="{{if not .IsChecked}}hide{{end}} item" id="label_{{.ID}}" href="{{$.RepoLink}}/issues?labels={{.ID}}"><span class="label color" style="background-color: {{.Color}}"></span> <span class="text">{{.Name}}</span></a>
{{end}} {{end}}
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
@ -259,35 +257,35 @@
<strong>{{.i18n.Tr "repo.issues.new.milestone"}}</strong> <strong>{{.i18n.Tr "repo.issues.new.milestone"}}</strong>
<span class="octicon octicon-gear"></span> <span class="octicon octicon-gear"></span>
</span> </span>
<div class="menu" data-action="update" data-update-url="{{$.RepoLink}}/issues/{{$.Issue.Index}}/milestone"> <div class="menu" data-action="update" data-update-url="{{$.RepoLink}}/issues/{{$.Issue.Index}}/milestone">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_milestone"}}</div> <div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_milestone"}}</div>
{{if .OpenMilestones}} {{if .OpenMilestones}}
<div class="divider"></div> <div class="divider"></div>
<div class="header"> <div class="header">
<i class="octicon octicon-milestone"></i> <i class="octicon octicon-milestone"></i>
{{.i18n.Tr "repo.issues.new.open_milestone"}} {{.i18n.Tr "repo.issues.new.open_milestone"}}
</div> </div>
{{range .OpenMilestones}} {{range .OpenMilestones}}
<div class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</div> <div class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</div>
{{end}} {{end}}
{{end}} {{end}}
{{if .ClosedMilestones}} {{if .ClosedMilestones}}
<div class="divider"></div> <div class="divider"></div>
<div class="header"> <div class="header">
<i class="octicon octicon-milestone"></i> <i class="octicon octicon-milestone"></i>
{{.i18n.Tr "repo.issues.new.closed_milestone"}} {{.i18n.Tr "repo.issues.new.closed_milestone"}}
</div> </div>
{{range .ClosedMilestones}} {{range .ClosedMilestones}}
<a class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</a> <a class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</a>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="ui select-milestone list"> <div class="ui select-milestone list">
<span class="no-select item {{if .Issue.Milestone}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_milestone"}}</span> <span class="no-select item {{if .Issue.Milestone}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_milestone"}}</span>
<div class="selected"> <div class="selected">
{{if .Issue.Milestone}} {{if .Issue.Milestone}}
<a class="item" href="{{.RepoLink}}/issues?milestone={{.Issue.Milestone.ID}}"> {{.Issue.Milestone.Name}}</a> <a class="item" href="{{.RepoLink}}/issues?milestone={{.Issue.Milestone.ID}}"> {{.Issue.Milestone.Name}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
@ -300,18 +298,18 @@
<strong>{{.i18n.Tr "repo.issues.new.assignee"}}</strong> <strong>{{.i18n.Tr "repo.issues.new.assignee"}}</strong>
<span class="octicon octicon-gear"></span> <span class="octicon octicon-gear"></span>
</span> </span>
<div class="menu" data-action="update" data-update-url="{{$.RepoLink}}/issues/{{$.Issue.Index}}/assignee"> <div class="menu" data-action="update" data-update-url="{{$.RepoLink}}/issues/{{$.Issue.Index}}/assignee">
<div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_assignee"}}</div> <div class="no-select item">{{.i18n.Tr "repo.issues.new.clear_assignee"}}</div>
{{range .Assignees}} {{range .Assignees}}
<div class="item" data-id="{{.Id}}" data-href="{{$.RepoLink}}/issues?assignee={{.Id}}" data-avatar="{{.AvatarLink}}"><img src="{{.AvatarLink}}"> {{.Name}}</div> <div class="item" data-id="{{.Id}}" data-href="{{$.RepoLink}}/issues?assignee={{.Id}}" data-avatar="{{.AvatarLink}}"><img src="{{.AvatarLink}}"> {{.Name}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="ui select-assignee list"> <div class="ui select-assignee list">
<span class="no-select item {{if .Issue.Assignee}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_assignee"}}</span> <span class="no-select item {{if .Issue.Assignee}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_assignee"}}</span>
<div class="selected"> <div class="selected">
{{if .Issue.Assignee}} {{if .Issue.Assignee}}
<a class="item" href="{{$.RepoLink}}/issues?assignee={{.Issue.Assignee.Id}}"><img class="ui avatar image" src="{{.Issue.Assignee.AvatarLink}}"> {{.Issue.Assignee.Name}}</a> <a class="item" href="{{$.RepoLink}}/issues?assignee={{.Issue.Assignee.Id}}"><img class="ui avatar image" src="{{.Issue.Assignee.AvatarLink}}"> {{.Issue.Assignee.Name}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
@ -322,22 +320,22 @@
<div class="hide" id="edit-content-form"> <div class="hide" id="edit-content-form">
<div class="ui comment form"> <div class="ui comment form">
<div class="ui top attached tabular menu"> <div class="ui top attached tabular menu">
<a class="active write item">{{$.i18n.Tr "repo.release.write"}}</a> <a class="active write item">{{$.i18n.Tr "repo.release.write"}}</a>
<a class="preview item" data-url="{{AppSubUrl}}/api/v1/markdown" data-context="{{$.RepoLink}}">{{$.i18n.Tr "repo.release.preview"}}</a> <a class="preview item" data-url="{{AppSubUrl}}/api/v1/markdown" data-context="{{$.RepoLink}}">{{$.i18n.Tr "repo.release.preview"}}</a>
</div> </div>
<div class="ui bottom attached active write tab segment"> <div class="ui bottom attached active write tab segment">
<textarea tabindex="1" id="content" name="content"></textarea> <textarea tabindex="1" id="content" name="content"></textarea>
</div> </div>
<div class="ui bottom attached tab preview segment markdown emojify"> <div class="ui bottom attached tab preview segment markdown emojify">
{{$.i18n.Tr "repo.release.loading"}} {{$.i18n.Tr "repo.release.loading"}}
</div> </div>
<div class="text right edit buttons"> <div class="text right edit buttons">
<div class="ui basic blue cancel button" tabindex="3">{{.i18n.Tr "repo.issues.cancel"}}</div> <div class="ui basic blue cancel button" tabindex="3">{{.i18n.Tr "repo.issues.cancel"}}</div>
<div class="ui green save button" tabindex="2">{{.i18n.Tr "repo.issues.save"}}</div> <div class="ui green save button" tabindex="2">{{.i18n.Tr "repo.issues.save"}}</div>
</div> </div>
</div> </div>
</div> </div>
<div class="hide" id="no-content"> <div class="hide" id="no-content">
<span class="no-content">{{.i18n.Tr "repo.issues.no_content"}}</span> <span class="no-content">{{.i18n.Tr "repo.issues.no_content"}}</span>
</div> </div>

View File

@ -3,47 +3,47 @@
<h1 class="twelve wide column"> <h1 class="twelve wide column">
<span class="index">#{{.Issue.Index}}</span> <span id="issue-title">{{.Issue.Name}}</span> <span class="index">#{{.Issue.Index}}</span> <span id="issue-title">{{.Issue.Name}}</span>
<div id="edit-title-input" class="ui input" style="display: none"> <div id="edit-title-input" class="ui input" style="display: none">
<input value="{{.Issue.Name}}"> <input value="{{.Issue.Name}}">
</div> </div>
</h1> </h1>
{{if .IsIssueOwner}} {{if .IsIssueOwner}}
<div class="four wide column"> <div class="four wide column">
<div class="edit-zone text right"> <div class="edit-zone text right">
<div id="edit-title" class="ui basic green not-in-edit button">{{.i18n.Tr "repo.issues.edit"}}</div> <div id="edit-title" class="ui basic green not-in-edit button">{{.i18n.Tr "repo.issues.edit"}}</div>
<div id="cancel-edit-title" class="ui basic blue in-edit button" style="display: none">{{.i18n.Tr "repo.issues.cancel"}}</div> <div id="cancel-edit-title" class="ui basic blue in-edit button" style="display: none">{{.i18n.Tr "repo.issues.cancel"}}</div>
<div id="save-edit-title" class="ui green in-edit button" style="display: none" data-update-url="{{$.RepoLink}}/issues/{{.Issue.Index}}/title">{{.i18n.Tr "repo.issues.save"}}</div> <div id="save-edit-title" class="ui green in-edit button" style="display: none" data-update-url="{{$.RepoLink}}/issues/{{.Issue.Index}}/title">{{.i18n.Tr "repo.issues.save"}}</div>
</div>
</div> </div>
</div>
{{end}} {{end}}
</div> </div>
{{if .HasMerged}} {{if .HasMerged}}
<div class="ui purple large label"><i class="octicon octicon-git-pull-request"></i> {{.i18n.Tr "repo.pulls.merged"}}</div> <div class="ui purple large label"><i class="octicon octicon-git-pull-request"></i> {{.i18n.Tr "repo.pulls.merged"}}</div>
{{else if .Issue.IsClosed}} {{else if .Issue.IsClosed}}
<div class="ui red large label"><i class="octicon octicon-issue-closed"></i> {{.i18n.Tr "repo.issues.closed_title"}}</div> <div class="ui red large label"><i class="octicon octicon-issue-closed"></i> {{.i18n.Tr "repo.issues.closed_title"}}</div>
{{else}} {{else}}
<div class="ui green large label"><i class="octicon octicon-issue-opened"></i> {{.i18n.Tr "repo.issues.open_title"}}</div> <div class="ui green large label"><i class="octicon octicon-issue-opened"></i> {{.i18n.Tr "repo.issues.open_title"}}</div>
{{end}} {{end}}
{{if .Issue.IsPull}} {{if .Issue.IsPull}}
{{if .Issue.HasMerged}} {{if .Issue.HasMerged}}
{{ $mergedStr:= TimeSince .Issue.Merged $.Lang }} {{ $mergedStr:= TimeSince .Issue.Merged $.Lang }}
<a {{if gt .Issue.Merger.Id 0}}href="{{.Issue.Merger.HomeLink}}"{{end}}>{{.Issue.Merger.Name}}</a> <a {{if gt .Issue.Merger.Id 0}}href="{{.Issue.Merger.HomeLink}}"{{end}}>{{.Issue.Merger.Name}}</a>
<span class="pull-desc">{{$.i18n.Tr "repo.pulls.merged_title_desc" .NumCommits .HeadTarget .BaseTarget $mergedStr | Safe}}</span> <span class="pull-desc">{{$.i18n.Tr "repo.pulls.merged_title_desc" .NumCommits .HeadTarget .BaseTarget $mergedStr | Safe}}</span>
{{else}} {{else}}
<a {{if gt .Issue.Poster.Id 0}}href="{{.Issue.Poster.HomeLink}}"{{end}}>{{.Issue.Poster.Name}}</a> <a {{if gt .Issue.Poster.Id 0}}href="{{.Issue.Poster.HomeLink}}"{{end}}>{{.Issue.Poster.Name}}</a>
<span class="pull-desc">{{$.i18n.Tr "repo.pulls.title_desc" .NumCommits .HeadTarget .BaseTarget | Str2html}}</span> <span class="pull-desc">{{$.i18n.Tr "repo.pulls.title_desc" .NumCommits .HeadTarget .BaseTarget | Str2html}}</span>
{{end}} {{end}}
{{else}} {{else}}
{{ $createdStr:= TimeSince .Issue.Created $.Lang }} {{ $createdStr:= TimeSince .Issue.Created $.Lang }}
<span class="time-desc"> <span class="time-desc">
{{if gt .Issue.Poster.Id 0}} {{if gt .Issue.Poster.Id 0}}
{{$.i18n.Tr "repo.issues.opened_by" $createdStr .Issue.Poster.HomeLink .Issue.Poster.Name | Safe}} {{$.i18n.Tr "repo.issues.opened_by" $createdStr .Issue.Poster.HomeLink .Issue.Poster.Name | Safe}}
{{else}} {{else}}
{{$.i18n.Tr "repo.issues.opened_by_fake" $createdStr .Issue.Poster.Name | Safe}} {{$.i18n.Tr "repo.issues.opened_by_fake" $createdStr .Issue.Poster.Name | Safe}}
{{end}} {{end}}
· ·
{{$.i18n.Tr "repo.issues.num_comments" .Issue.NumComments}} {{$.i18n.Tr "repo.issues.num_comments" .Issue.NumComments}}
</span> </span>
{{end}} {{end}}
<div class="ui divider"></div> <div class="ui divider"></div>
</div> </div>

View File

@ -3,99 +3,99 @@
<div class="ui middle very relaxed page grid"> <div class="ui middle very relaxed page grid">
<div class="column"> <div class="column">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<h3 class="ui top attached header"> <h3 class="ui top attached header">
{{.i18n.Tr "new_migrate"}} {{.i18n.Tr "new_migrate"}}
</h3> </h3>
<div class="ui attached segment"> <div class="ui attached segment">
{{template "base/alert" .}} {{template "base/alert" .}}
<div class="inline required field {{if .Err_CloneAddr}}error{{end}}"> <div class="inline required field {{if .Err_CloneAddr}}error{{end}}">
<label for="clone_addr">{{.i18n.Tr "repo.migrate.clone_address"}}</label> <label for="clone_addr">{{.i18n.Tr "repo.migrate.clone_address"}}</label>
<input id="clone_addr" name="clone_addr" value="{{.clone_addr}}" autofocus required> <input id="clone_addr" name="clone_addr" value="{{.clone_addr}}" autofocus required>
<span class="help">{{.i18n.Tr "repo.migrate.clone_address_desc"}}</span> <span class="help">{{.i18n.Tr "repo.migrate.clone_address_desc"}}</span>
</div>
<div class="ui accordion optional field">
<div class="title {{if .Err_Auth}}text red active{{end}}">
<i class="icon dropdown"></i>
{{.i18n.Tr "repo.need_auth"}}
</div>
<div class="content {{if .Err_Auth}}active{{end}}">
<div class="inline field {{if .Err_Auth}}error{{end}}">
<label for="auth_username">{{.i18n.Tr "username"}}</label>
<input id="auth_username" name="auth_username" value="{{.auth_username}}" {{if not .auth_username}}data-need-clear="true"{{end}}>
</div>
<input class="fake" type="password">
<div class="inline field {{if .Err_Auth}}error{{end}}">
<label for="auth_password">{{.i18n.Tr "password"}}</label>
<input id="auth_password" name="auth_password" type="password" value="{{.auth_password}}">
</div>
</div>
</div> </div>
<div class="ui accordion optional field">
<div class="title {{if .Err_Auth}}text red active{{end}}">
<i class="icon dropdown"></i>
{{.i18n.Tr "repo.need_auth"}}
</div>
<div class="content {{if .Err_Auth}}active{{end}}">
<div class="inline field {{if .Err_Auth}}error{{end}}">
<label for="auth_username">{{.i18n.Tr "username"}}</label>
<input id="auth_username" name="auth_username" value="{{.auth_username}}" {{if not .auth_username}}data-need-clear="true"{{end}}>
</div>
<input class="fake" type="password">
<div class="inline field {{if .Err_Auth}}error{{end}}">
<label for="auth_password">{{.i18n.Tr "password"}}</label>
<input id="auth_password" name="auth_password" type="password" value="{{.auth_password}}">
</div>
</div>
</div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="inline required field {{if .Err_Owner}}error{{end}}"> <div class="inline required field {{if .Err_Owner}}error{{end}}">
<label>{{.i18n.Tr "repo.owner"}}</label> <label>{{.i18n.Tr "repo.owner"}}</label>
<div class="ui selection owner dropdown"> <div class="ui selection owner dropdown">
<input type="hidden" id="uid" name="uid" value="{{.ContextUser.Id}}" required> <input type="hidden" id="uid" name="uid" value="{{.ContextUser.Id}}" required>
<span class="text"> <span class="text">
<img class="ui mini image" src="{{.ContextUser.AvatarLink}}"> <img class="ui mini image" src="{{.ContextUser.AvatarLink}}">
{{.ContextUser.ShortName 20}} {{.ContextUser.ShortName 20}}
</span> </span>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
<div class="item" data-value="{{.SignedUser.Id}}"> <div class="item" data-value="{{.SignedUser.Id}}">
<img class="ui mini image" src="{{.SignedUser.AvatarLink}}"> <img class="ui mini image" src="{{.SignedUser.AvatarLink}}">
{{.SignedUser.ShortName 20}} {{.SignedUser.ShortName 20}}
</div> </div>
{{range .Orgs}} {{range .Orgs}}
<div class="item" data-value="{{.Id}}"> <div class="item" data-value="{{.Id}}">
<img class="ui mini image" src="{{.AvatarLink}}"> <img class="ui mini image" src="{{.AvatarLink}}">
{{.ShortName 20}} {{.ShortName 20}}
</div> </div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
<div class="inline required field {{if .Err_RepoName}}error{{end}}"> <div class="inline required field {{if .Err_RepoName}}error{{end}}">
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label> <label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
<input id="repo_name" name="repo_name" value="{{.repo_name}}" required> <input id="repo_name" name="repo_name" value="{{.repo_name}}" required>
</div> </div>
<div class="inline field"> <div class="inline field">
<label>{{.i18n.Tr "repo.visibility"}}</label> <label>{{.i18n.Tr "repo.visibility"}}</label>
<div class="ui checkbox"> <div class="ui checkbox">
{{if .IsForcedPrivate}} {{if .IsForcedPrivate}}
<input name="private" type="checkbox" checked readonly> <input name="private" type="checkbox" checked readonly>
<label>{{.i18n.Tr "repo.visiblity_helper_forced" | Safe}}</label> <label>{{.i18n.Tr "repo.visiblity_helper_forced" | Safe}}</label>
{{else}} {{else}}
<input name="private" type="checkbox" {{if .private}}checked{{end}}> <input name="private" type="checkbox" {{if .private}}checked{{end}}>
<label>{{.i18n.Tr "repo.visiblity_helper" | Safe}}</label> <label>{{.i18n.Tr "repo.visiblity_helper" | Safe}}</label>
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<label>{{.i18n.Tr "repo.migrate_type"}}</label> <label>{{.i18n.Tr "repo.migrate_type"}}</label>
<div class="ui checkbox"> <div class="ui checkbox">
<input name="mirror" type="checkbox" {{if .mirror}}checked{{end}}> <input name="mirror" type="checkbox" {{if .mirror}}checked{{end}}>
<label>{{.i18n.Tr "repo.migrate_type_helper" | Safe}}</label> <label>{{.i18n.Tr "repo.migrate_type_helper" | Safe}}</label>
</div> </div>
</div> </div>
<div class="inline field {{if .Err_Description}}error{{end}}"> <div class="inline field {{if .Err_Description}}error{{end}}">
<label for="description">{{.i18n.Tr "repo.repo_desc"}}</label> <label for="description">{{.i18n.Tr "repo.repo_desc"}}</label>
<textarea id="description" name="description">{{.description}}</textarea> <textarea id="description" name="description">{{.description}}</textarea>
</div> </div>
<div class="inline field"> <div class="inline field">
<label></label> <label></label>
<button class="ui green button"> <button class="ui green button">
{{.i18n.Tr "repo.migrate_repo"}} {{.i18n.Tr "repo.migrate_repo"}}
</button> </button>
<a class="ui button" href="{{AppSubUrl}}/">{{.i18n.Tr "cancel"}}</a> <a class="ui button" href="{{AppSubUrl}}/">{{.i18n.Tr "cancel"}}</a>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -11,9 +11,9 @@
<div class="ui divider"></div> <div class="ui divider"></div>
{{template "repo/issue/view_title" .}} {{template "repo/issue/view_title" .}}
{{template "repo/pulls/tab_menu" .}} {{template "repo/pulls/tab_menu" .}}
<div class="ui bottom attached tab pull segment active"> <div class="ui bottom attached tab pull segment active">
{{template "repo/commits_table" .}} {{template "repo/commits_table" .}}
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -4,63 +4,63 @@
<div class="ui container"> <div class="ui container">
<div class="sixteen wide column page grid"> <div class="sixteen wide column page grid">
<h2 class="ui header"> <h2 class="ui header">
{{.i18n.Tr "repo.pulls.compare_changes"}} {{.i18n.Tr "repo.pulls.compare_changes"}}
<div class="sub header">{{.i18n.Tr "repo.pulls.compare_changes_desc"}}</div> <div class="sub header">{{.i18n.Tr "repo.pulls.compare_changes_desc"}}</div>
</h2> </h2>
<div class="ui segment choose branch"> <div class="ui segment choose branch">
<span class="octicon octicon-git-compare"></span> <span class="octicon octicon-git-compare"></span>
<div class="ui floating filter dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}"> <div class="ui floating filter dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}">
<div class="ui basic small button"> <div class="ui basic small button">
<span class="text">{{.i18n.Tr "repo.pulls.compare_base"}}: {{$.BaseBranch}}</span> <span class="text">{{.i18n.Tr "repo.pulls.compare_base"}}: {{$.BaseBranch}}</span>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
</div> </div>
<div class="menu"> <div class="menu">
<div class="ui icon search input"> <div class="ui icon search input">
<i class="filter icon"></i> <i class="filter icon"></i>
<input name="search" placeholder="{{.i18n.Tr "repo.pulls.filter_branch"}}..."> <input name="search" placeholder="{{.i18n.Tr "repo.pulls.filter_branch"}}...">
</div> </div>
<div class="scrolling menu"> <div class="scrolling menu">
{{range .Branches}} {{range .Branches}}
<div class="item {{if eq $.BaseBranch .}}selected{{end}}" data-url="{{$.RepoLink}}/compare/{{.}}...{{$.SignedUser.Name}}:{{$.HeadBranch}}">{{.}}</div> <div class="item {{if eq $.BaseBranch .}}selected{{end}}" data-url="{{$.RepoLink}}/compare/{{.}}...{{$.SignedUser.Name}}:{{$.HeadBranch}}">{{.}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
... ...
<div class="ui floating filter dropdown"> <div class="ui floating filter dropdown">
<div class="ui basic small button"> <div class="ui basic small button">
<span class="text">{{.i18n.Tr "repo.pulls.compare_compare"}}: {{$.HeadBranch}}</span> <span class="text">{{.i18n.Tr "repo.pulls.compare_compare"}}: {{$.HeadBranch}}</span>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
</div> </div>
<div class="menu"> <div class="menu">
<div class="ui icon search input"> <div class="ui icon search input">
<i class="filter icon"></i> <i class="filter icon"></i>
<input name="search" placeholder="{{.i18n.Tr "repo.pulls.filter_branch"}}..."> <input name="search" placeholder="{{.i18n.Tr "repo.pulls.filter_branch"}}...">
</div> </div>
<div class="scrolling menu"> <div class="scrolling menu">
{{range .HeadBranches}} {{range .HeadBranches}}
<div class="{{if eq $.HeadBranch .}}selected{{end}} item" data-url="{{$.RepoLink}}/compare/{{$.BaseBranch}}...{{$.SignedUser.Name}}:{{.}}">{{.}}</div> <div class="{{if eq $.HeadBranch .}}selected{{end}} item" data-url="{{$.RepoLink}}/compare/{{$.BaseBranch}}...{{$.SignedUser.Name}}:{{.}}">{{.}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{if .IsNothingToCompare}} {{if .IsNothingToCompare}}
<div class="ui segment"> <div class="ui segment">
{{.i18n.Tr "repo.pulls.nothing_to_compare"}} {{.i18n.Tr "repo.pulls.nothing_to_compare"}}
</div> </div>
{{else if .HasPullRequest}} {{else if .HasPullRequest}}
<div class="ui segment"> <div class="ui segment">
{{.i18n.Tr "repo.pulls.has_pull_request" $.RepoLink $.RepoRelPath .PullRequest.Index | Safe}} {{.i18n.Tr "repo.pulls.has_pull_request" $.RepoLink $.RepoRelPath .PullRequest.Index | Safe}}
</div> </div>
{{else}} {{else}}
{{template "repo/issue/new_form" .}} {{template "repo/issue/new_form" .}}
{{template "repo/commits_table" .}} {{template "repo/commits_table" .}}
{{template "repo/diff_box" .}} {{template "repo/diff_box" .}}
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -11,9 +11,9 @@
<div class="ui divider"></div> <div class="ui divider"></div>
{{template "repo/issue/view_title" .}} {{template "repo/issue/view_title" .}}
{{template "repo/pulls/tab_menu" .}} {{template "repo/pulls/tab_menu" .}}
<div class="ui bottom attached tab pull segment active"> <div class="ui bottom attached tab pull segment active">
{{template "repo/diff_box" .}} {{template "repo/diff_box" .}}
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -3,69 +3,69 @@
<div class="ui middle very relaxed page grid"> <div class="ui middle very relaxed page grid">
<div class="column"> <div class="column">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<h3 class="ui top attached header"> <h3 class="ui top attached header">
{{.i18n.Tr "new_fork"}} {{.i18n.Tr "new_fork"}}
</h3> </h3>
<div class="ui attached segment"> <div class="ui attached segment">
{{template "base/alert" .}} {{template "base/alert" .}}
<div class="inline required field {{if .Err_Owner}}error{{end}}"> <div class="inline required field {{if .Err_Owner}}error{{end}}">
<label>{{.i18n.Tr "repo.owner"}}</label> <label>{{.i18n.Tr "repo.owner"}}</label>
<div class="ui selection owner dropdown"> <div class="ui selection owner dropdown">
<input type="hidden" id="uid" name="uid" value="{{.ContextUser.Id}}" required> <input type="hidden" id="uid" name="uid" value="{{.ContextUser.Id}}" required>
<span class="text"> <span class="text">
<img class="ui mini image" src="{{.ContextUser.AvatarLink}}"> <img class="ui mini image" src="{{.ContextUser.AvatarLink}}">
{{.ContextUser.ShortName 20}} {{.ContextUser.ShortName 20}}
</span> </span>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
<div class="item" data-value="{{.SignedUser.Id}}"> <div class="item" data-value="{{.SignedUser.Id}}">
<img class="ui mini image" src="{{.SignedUser.AvatarLink}}"> <img class="ui mini image" src="{{.SignedUser.AvatarLink}}">
{{.SignedUser.ShortName 20}} {{.SignedUser.ShortName 20}}
</div> </div>
{{range .Orgs}} {{range .Orgs}}
{{if .IsOwnedBy $.SignedUser.Id}} {{if .IsOwnedBy $.SignedUser.Id}}
<div class="item" data-value="{{.Id}}"> <div class="item" data-value="{{.Id}}">
<img class="ui mini image" src="{{.AvatarLink}}"> <img class="ui mini image" src="{{.AvatarLink}}">
{{.ShortName 20}} {{.ShortName 20}}
</div> </div>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<label>{{.i18n.Tr "repo.fork_from"}}</label> <label>{{.i18n.Tr "repo.fork_from"}}</label>
<a href="{{AppSubUrl}}/{{.ForkFrom}}">{{.ForkFrom}}</a> <a href="{{AppSubUrl}}/{{.ForkFrom}}">{{.ForkFrom}}</a>
</div> </div>
<div class="inline required field {{if .Err_RepoName}}error{{end}}"> <div class="inline required field {{if .Err_RepoName}}error{{end}}">
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label> <label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
<input id="repo_name" name="repo_name" value="{{.repo_name}}" required> <input id="repo_name" name="repo_name" value="{{.repo_name}}" required>
</div> </div>
<div class="inline field"> <div class="inline field">
<label>{{.i18n.Tr "repo.visibility"}}</label> <label>{{.i18n.Tr "repo.visibility"}}</label>
<div class="ui read-only checkbox"> <div class="ui read-only checkbox">
<input type="checkbox" {{if .IsPrivate}}checked{{end}}> <input type="checkbox" {{if .IsPrivate}}checked{{end}}>
<label>{{.i18n.Tr "repo.visiblity_helper" | Safe}}</label> <label>{{.i18n.Tr "repo.visiblity_helper" | Safe}}</label>
</div> </div>
<span class="help">{{.i18n.Tr "repo.fork_visiblity_helper"}}</span> <span class="help">{{.i18n.Tr "repo.fork_visiblity_helper"}}</span>
</div> </div>
<div class="inline field {{if .Err_Description}}error{{end}}"> <div class="inline field {{if .Err_Description}}error{{end}}">
<label for="description">{{.i18n.Tr "repo.repo_desc"}}</label> <label for="description">{{.i18n.Tr "repo.repo_desc"}}</label>
<textarea id="description" name="description">{{.description}}</textarea> <textarea id="description" name="description">{{.description}}</textarea>
</div> </div>
<div class="inline field"> <div class="inline field">
<label></label> <label></label>
<button class="ui green button"> <button class="ui green button">
{{.i18n.Tr "repo.fork_repo"}} {{.i18n.Tr "repo.fork_repo"}}
</button> </button>
<a class="ui button" href="{{AppSubUrl}}/{{.ForkFrom}}">{{.i18n.Tr "cancel"}}</a> <a class="ui button" href="{{AppSubUrl}}/{{.ForkFrom}}">{{.i18n.Tr "cancel"}}</a>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,17 +1,17 @@
<div class="ui top attached pull tabular menu"> <div class="ui top attached pull tabular menu">
<a class="item {{if .PageIsPullConversation}}active{{end}}" href="{{.RepoLink}}/pulls/{{.Issue.Index}}"> <a class="item {{if .PageIsPullConversation}}active{{end}}" href="{{.RepoLink}}/pulls/{{.Issue.Index}}">
<span class="octicon octicon-comment-discussion"></span> <span class="octicon octicon-comment-discussion"></span>
{{$.i18n.Tr "repo.pulls.tab_conversation"}} {{$.i18n.Tr "repo.pulls.tab_conversation"}}
<span class="ui label">{{.Issue.NumComments}}</span> <span class="ui label">{{.Issue.NumComments}}</span>
</a> </a>
<a class="item {{if .PageIsPullCommits}}active{{end}}" {{if .NumCommits}}href="{{.RepoLink}}/pulls/{{.Issue.Index}}/commits"{{end}}> <a class="item {{if .PageIsPullCommits}}active{{end}}" {{if .NumCommits}}href="{{.RepoLink}}/pulls/{{.Issue.Index}}/commits"{{end}}>
<span class="octicon octicon-git-commit"></span> <span class="octicon octicon-git-commit"></span>
{{$.i18n.Tr "repo.pulls.tab_commits"}} {{$.i18n.Tr "repo.pulls.tab_commits"}}
<span class="ui label">{{if .NumCommits}}{{.NumCommits}}{{else}}N/A{{end}}</span> <span class="ui label">{{if .NumCommits}}{{.NumCommits}}{{else}}N/A{{end}}</span>
</a> </a>
<a class="item {{if .PageIsPullFiles}}active{{end}}" {{if .NumFiles}}href="{{.RepoLink}}/pulls/{{.Issue.Index}}/files"{{end}}> <a class="item {{if .PageIsPullFiles}}active{{end}}" {{if .NumFiles}}href="{{.RepoLink}}/pulls/{{.Issue.Index}}/files"{{end}}>
<span class="octicon octicon-diff"></span> <span class="octicon octicon-diff"></span>
{{$.i18n.Tr "repo.pulls.tab_files"}} {{$.i18n.Tr "repo.pulls.tab_files"}}
<span class="ui label">{{if .NumFiles}}{{.NumFiles}}{{else}}N/A{{end}}</span> <span class="ui label">{{if .NumFiles}}{{.NumFiles}}{{else}}N/A{{end}}</span>
</a> </a>
</div> </div>

View File

@ -1,80 +1,80 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository release"> <div class="repository release">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
{{template "base/alert" .}} {{template "base/alert" .}}
<h2 class="ui header"> <h2 class="ui header">
{{.i18n.Tr "repo.release.releases"}} {{.i18n.Tr "repo.release.releases"}}
{{if .IsRepositoryAdmin}} {{if .IsRepositoryAdmin}}
<div class="ui right"> <div class="ui right">
<a class="ui small green button" href="{{$.RepoLink}}/releases/new"> <a class="ui small green button" href="{{$.RepoLink}}/releases/new">
{{.i18n.Tr "repo.release.new_release"}} {{.i18n.Tr "repo.release.new_release"}}
</a> </a>
</div> </div>
{{end}} {{end}}
</h2> </h2>
<ul id="release-list"> <ul id="release-list">
{{range .Releases}} {{range .Releases}}
<li class="ui grid"> <li class="ui grid">
<div class="ui four wide column meta"> <div class="ui four wide column meta">
{{if .PublisherID}} {{if .PublisherID}}
{{if .IsDraft}} {{if .IsDraft}}
<span class="ui yellow label">{{$.i18n.Tr "repo.release.draft"}}</span> <span class="ui yellow label">{{$.i18n.Tr "repo.release.draft"}}</span>
{{else if .IsPrerelease}} {{else if .IsPrerelease}}
<span class="ui orange label">{{$.i18n.Tr "repo.release.prerelease"}}</span> <span class="ui orange label">{{$.i18n.Tr "repo.release.prerelease"}}</span>
{{else}} {{else}}
<span class="ui green label">{{$.i18n.Tr "repo.release.stable"}}</span> <span class="ui green label">{{$.i18n.Tr "repo.release.stable"}}</span>
{{end}} {{end}}
<span class="tag text blue"> <span class="tag text blue">
<a href="{{$.RepoLink}}/src/{{.TagName}}" rel="nofollow"><i class="tag icon"></i> {{.TagName}}</a> <a href="{{$.RepoLink}}/src/{{.TagName}}" rel="nofollow"><i class="tag icon"></i> {{.TagName}}</a>
</span> </span>
{{end}} {{end}}
<span class="commit"> <span class="commit">
<a href="{{$.RepoLink}}/src/{{.Sha1}}" rel="nofollow"><i class="code icon"></i> {{ShortSha .Sha1}}</a> <a href="{{$.RepoLink}}/src/{{.Sha1}}" rel="nofollow"><i class="code icon"></i> {{ShortSha .Sha1}}</a>
</span> </span>
</div> </div>
<div class="ui twelve wide column detail"> <div class="ui twelve wide column detail">
{{if .PublisherID}} {{if .PublisherID}}
<h3> <h3>
<a href="{{$.RepoLink}}/src/{{.TagName}}">{{.Title}}</a> <a href="{{$.RepoLink}}/src/{{.TagName}}">{{.Title}}</a>
{{if $.IsRepositoryAdmin}}<small>(<a href="{{$.RepoLink}}/releases/edit/{{.TagName}}" rel="nofollow">{{$.i18n.Tr "repo.release.edit"}}</a>)</small>{{end}} {{if $.IsRepositoryAdmin}}<small>(<a href="{{$.RepoLink}}/releases/edit/{{.TagName}}" rel="nofollow">{{$.i18n.Tr "repo.release.edit"}}</a>)</small>{{end}}
</h3> </h3>
<p class="text grey"> <p class="text grey">
<span class="author"> <span class="author">
<img class="img-10" src="{{.Publisher.AvatarLink}}"> <img class="img-10" src="{{.Publisher.AvatarLink}}">
<a href="{{AppSubUrl}}/{{.Publisher.Name}}">{{.Publisher.Name}}</a> <a href="{{AppSubUrl}}/{{.Publisher.Name}}">{{.Publisher.Name}}</a>
</span> </span>
{{if .Created}}<span class="time">{{TimeSince .Created $.Lang}}</span>{{end}} {{if .Created}}<span class="time">{{TimeSince .Created $.Lang}}</span>{{end}}
<span class="ahead">{{$.i18n.Tr "repo.release.ahead" .NumCommitsBehind .Target | Str2html}}</span> <span class="ahead">{{$.i18n.Tr "repo.release.ahead" .NumCommitsBehind .Target | Str2html}}</span>
</p> </p>
<div class="markdown desc"> <div class="markdown desc">
{{Str2html .Note}} {{Str2html .Note}}
</div> </div>
<div class="download"> <div class="download">
<h2>{{$.i18n.Tr "repo.release.downloads"}}</h2> <h2>{{$.i18n.Tr "repo.release.downloads"}}</h2>
<ul class="list"> <ul class="list">
<li> <li>
<a href="{{$.RepoLink}}/archive/{{.TagName}}.zip" rel="nofollow"><i class="icon octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (ZIP)</a> <a href="{{$.RepoLink}}/archive/{{.TagName}}.zip" rel="nofollow"><i class="icon octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (ZIP)</a>
</li> </li>
<li> <li>
<a href="{{$.RepoLink}}/archive/{{.TagName}}.tar.gz"><i class="icon octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (TAR.GZ)</a> <a href="{{$.RepoLink}}/archive/{{.TagName}}.tar.gz"><i class="icon octicon octicon-file-zip"></i> {{$.i18n.Tr "repo.release.source_code"}} (TAR.GZ)</a>
</li> </li>
</ul> </ul>
</div> </div>
{{else}} {{else}}
<h4> <h4>
<a href="{{$.RepoLink}}/src/{{.TagName}}" rel="nofollow"><i class="tag icon"></i> {{.TagName}}</a> <a href="{{$.RepoLink}}/src/{{.TagName}}" rel="nofollow"><i class="tag icon"></i> {{.TagName}}</a>
</h4> </h4>
<div class="download"> <div class="download">
<a href="{{$.RepoLink}}/archive/{{.TagName}}.zip" rel="nofollow"><i class="octicon octicon-file-zip"></i> ZIP</a> <a href="{{$.RepoLink}}/archive/{{.TagName}}.zip" rel="nofollow"><i class="octicon octicon-file-zip"></i> ZIP</a>
<a href="{{$.RepoLink}}/archive/{{.TagName}}.tar.gz"><i class="octicon octicon-file-zip"></i> TAR.GZ</a> <a href="{{$.RepoLink}}/archive/{{.TagName}}.tar.gz"><i class="octicon octicon-file-zip"></i> TAR.GZ</a>
</div> </div>
{{end}} {{end}}
<span class="dot">&nbsp;</span> <span class="dot">&nbsp;</span>
</div> </div>
</li> </li>
{{end}} {{end}}
</ul> </ul>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,98 +1,98 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository new release"> <div class="repository new release">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
<h2 class="ui dividing header"> <h2 class="ui dividing header">
{{if .PageIsEditRelease}} {{if .PageIsEditRelease}}
{{.i18n.Tr "repo.release.edit_release"}} {{.i18n.Tr "repo.release.edit_release"}}
<div class="sub header">{{.i18n.Tr "repo.release.edit_subheader"}}</div> <div class="sub header">{{.i18n.Tr "repo.release.edit_subheader"}}</div>
{{else}} {{else}}
{{.i18n.Tr "repo.release.new_release"}} {{.i18n.Tr "repo.release.new_release"}}
<div class="sub header">{{.i18n.Tr "repo.release.new_subheader"}}</div> <div class="sub header">{{.i18n.Tr "repo.release.new_subheader"}}</div>
{{end}} {{end}}
</h2> </h2>
{{template "base/alert" .}} {{template "base/alert" .}}
<form class="ui form grid" action="{{.Link}}" method="post"> <form class="ui form grid" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<div class="ui seven wide column target"> <div class="ui seven wide column target">
<div class="inline field {{if .Err_TagName}}error{{end}}"> <div class="inline field {{if .Err_TagName}}error{{end}}">
{{if .PageIsEditRelease}} {{if .PageIsEditRelease}}
<b>{{.tag_name}}</b><span class="at">@</span><strong>{{.tag_target}}</strong> <b>{{.tag_name}}</b><span class="at">@</span><strong>{{.tag_target}}</strong>
{{else}} {{else}}
<input name="tag_name" value="{{.tag_name}}" placeholder="{{.i18n.Tr "repo.release.tag_name"}}" autofocus required> <input name="tag_name" value="{{.tag_name}}" placeholder="{{.i18n.Tr "repo.release.tag_name"}}" autofocus required>
<span class="at">@</span> <span class="at">@</span>
<div class="ui selection dropdown"> <div class="ui selection dropdown">
<input type="hidden" name="tag_target" value="{{.tag_target}}"/> <input type="hidden" name="tag_target" value="{{.tag_target}}"/>
<i class="octicon octicon-git-branch"></i> <i class="octicon octicon-git-branch"></i>
<div class="text"> <div class="text">
{{.i18n.Tr "repo.release.target"}} : {{.i18n.Tr "repo.release.target"}} :
<strong id="repo-branch-current">{{.Repository.DefaultBranch}}</strong> <strong id="repo-branch-current">{{.Repository.DefaultBranch}}</strong>
</div> </div>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
{{range .Branches}} {{range .Branches}}
<div class="item" data-value="{{.}}">{{.}}</div> <div class="item" data-value="{{.}}">{{.}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
<span class="help">{{.i18n.Tr "repo.release.tag_helper"}}</span> <span class="help">{{.i18n.Tr "repo.release.tag_helper"}}</span>
{{end}} {{end}}
</div> </div>
</div> </div>
<div class="eleven wide column"> <div class="eleven wide column">
<div class="field {{if .Err_Title}}error{{end}}"> <div class="field {{if .Err_Title}}error{{end}}">
<label>{{.i18n.Tr "repo.release.title"}}</label> <label>{{.i18n.Tr "repo.release.title"}}</label>
<input name="title" placeholder="{{.i18n.Tr "repo.release.title"}}" value="{{.title}}" autofocus required> <input name="title" placeholder="{{.i18n.Tr "repo.release.title"}}" value="{{.title}}" autofocus required>
</div> </div>
<div class="field"> <div class="field">
<label>{{.i18n.Tr "repo.release.content"}}</label> <label>{{.i18n.Tr "repo.release.content"}}</label>
<textarea name="content">{{.content}}</textarea> <textarea name="content">{{.content}}</textarea>
</div> </div>
</div> </div>
<div class="ui container"> <div class="ui container">
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="ui text right"> <div class="ui text right">
<div class="prerelease field"> <div class="prerelease field">
<div class="ui checkbox"> <div class="ui checkbox">
<input type="checkbox" name="prerelease" {{if .prerelease}}checked{{end}}> <input type="checkbox" name="prerelease" {{if .prerelease}}checked{{end}}>
<label><strong>{{.i18n.Tr "repo.release.prerelease_desc"}}</strong></label> <label><strong>{{.i18n.Tr "repo.release.prerelease_desc"}}</strong></label>
</div> </div>
</div> </div>
<span class="help">{{.i18n.Tr "repo.release.prerelease_helper"}}</span> <span class="help">{{.i18n.Tr "repo.release.prerelease_helper"}}</span>
<div class="field"> <div class="field">
{{if .PageIsEditRelease}} {{if .PageIsEditRelease}}
<a class="ui blue basic button" href="{{.RepoLink}}/releases"> <a class="ui blue basic button" href="{{.RepoLink}}/releases">
{{.i18n.Tr "repo.release.cancel"}} {{.i18n.Tr "repo.release.cancel"}}
</a> </a>
<button class="ui green button"> <button class="ui green button">
{{.i18n.Tr "repo.release.edit_release"}} {{.i18n.Tr "repo.release.edit_release"}}
</button> </button>
<a class="ui red button delete-button" data-url="{{$.RepoLink}}/releases/delete" data-id="{{.ID}}"> <a class="ui red button delete-button" data-url="{{$.RepoLink}}/releases/delete" data-id="{{.ID}}">
{{$.i18n.Tr "repo.release.delete_release"}} {{$.i18n.Tr "repo.release.delete_release"}}
</a> </a>
{{else}} {{else}}
<button class="ui green button"> <button class="ui green button">
{{.i18n.Tr "repo.release.publish"}} {{.i18n.Tr "repo.release.publish"}}
</button> </button>
<input class="ui grey button" type="submit" name="draft" value="{{.i18n.Tr "repo.release.save_draft"}}"/> <input class="ui grey button" type="submit" name="draft" value="{{.i18n.Tr "repo.release.save_draft"}}"/>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
{{if .PageIsEditRelease}} {{if .PageIsEditRelease}}
<div class="ui small basic delete modal"> <div class="ui small basic delete modal">
<div class="ui icon header"> <div class="ui icon header">
<i class="trash icon"></i> <i class="trash icon"></i>
{{.i18n.Tr "repo.release.deletion"}} {{.i18n.Tr "repo.release.deletion"}}
</div> </div>
<div class="content"> <div class="content">
<p>{{.i18n.Tr "repo.release.deletion_desc"}}</p> <p>{{.i18n.Tr "repo.release.deletion_desc"}}</p>
</div> </div>
{{template "base/delete_modal_actions" .}} {{template "base/delete_modal_actions" .}}
</div> </div>
{{end}} {{end}}
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -7,37 +7,37 @@
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "repo.settings.collaboration"}} {{.i18n.Tr "repo.settings.collaboration"}}
</h4> </h4>
<div class="ui attached segment collaborator list"> <div class="ui attached segment collaborator list">
{{range .Collaborators}} {{range .Collaborators}}
<div class="item"> <div class="item">
{{if not (eq .Id $.Owner.Id)}} {{if not (eq .Id $.Owner.Id)}}
<a href="{{$.RepoLink}}/settings/collaboration?remove={{.Name}}" class="ui right text red"><i class="fa fa-times"></i></a> <a href="{{$.RepoLink}}/settings/collaboration?remove={{.Name}}" class="ui right text red"><i class="fa fa-times"></i></a>
{{end}} {{end}}
<a href="{{AppSubUrl}}/{{.Name}}"> <a href="{{AppSubUrl}}/{{.Name}}">
<img class="ui avatar image" src="{{.AvatarLink}}"> <img class="ui avatar image" src="{{.AvatarLink}}">
{{.DisplayName}} {{.DisplayName}}
</a> </a>
</div> </div>
{{end}} {{end}}
</div> </div>
<div class="ui bottom attached segment"> <div class="ui bottom attached segment">
<form class="ui form" id="repo-collab-form" action="{{.Link}}" method="post"> <form class="ui form" id="repo-collab-form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<div class="inline field ui left"> <div class="inline field ui left">
<div id="search-user-box"> <div id="search-user-box">
<div class="ui input"> <div class="ui input">
<input class="prompt" name="collaborator" placeholder="{{.i18n.Tr "repo.settings.search_user_placeholder"}}" autocomplete="off" required> <input class="prompt" name="collaborator" placeholder="{{.i18n.Tr "repo.settings.search_user_placeholder"}}" autocomplete="off" required>
</div> </div>
<div class="ui segment results hide"></div> <div class="ui segment results hide"></div>
</div> </div>
</div> </div>
<button class="ui green button">{{.i18n.Tr "repo.settings.add_collaborator"}}</button> <button class="ui green button">{{.i18n.Tr "repo.settings.add_collaborator"}}</button>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -7,41 +7,41 @@
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "repo.settings.deploy_keys"}} {{.i18n.Tr "repo.settings.deploy_keys"}}
<div class="ui right"> <div class="ui right">
<div class="ui blue tiny show-panel button" data-panel="#add-deploy-key-panel">{{.i18n.Tr "repo.settings.add_deploy_key"}}</div> <div class="ui blue tiny show-panel button" data-panel="#add-deploy-key-panel">{{.i18n.Tr "repo.settings.add_deploy_key"}}</div>
</div> </div>
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
{{if .Deploykeys}} {{if .Deploykeys}}
<div class="ui key list"> <div class="ui key list">
{{range .Deploykeys}} {{range .Deploykeys}}
<div class="item ui grid"> <div class="item ui grid">
<div class="one wide column"> <div class="one wide column">
<i class="ssh-key-state-indicator fa fa-circle{{if .HasRecentActivity}} active invert poping up{{else}}-o{{end}}" {{if .HasRecentActivity}}data-content="{{$.i18n.Tr "settings.key_state_desc"}}" data-variation="inverted"{{end}}></i> <i class="ssh-key-state-indicator fa fa-circle{{if .HasRecentActivity}} active invert poping up{{else}}-o{{end}}" {{if .HasRecentActivity}}data-content="{{$.i18n.Tr "settings.key_state_desc"}}" data-variation="inverted"{{end}}></i>
</div> </div>
<div class="one wide column"> <div class="one wide column">
<i class="mega-octicon octicon-key left"></i> <i class="mega-octicon octicon-key left"></i>
</div> </div>
<div class="eleven wide column"> <div class="eleven wide column">
<strong>{{.Name}}</strong> <strong>{{.Name}}</strong>
<div class="print meta"> <div class="print meta">
{{.Fingerprint}} {{.Fingerprint}}
</div>
<div class="activity meta">
<i>{{$.i18n.Tr "settings.add_on"}} <span>{{DateFmtShort .Created}}</span> — <i class="octicon octicon-info"></i> {{if .HasUsed}}{{$.i18n.Tr "settings.last_used"}} <span>{{DateFmtShort .Updated}}</span>{{else}}{{$.i18n.Tr "settings.no_activity"}}{{end}}</i>
</div>
</div>
<div class="two wide column">
<button class="ui red tiny button delete-button" data-url="{{$.Link}}/delete" data-id="{{.ID}}">
{{$.i18n.Tr "settings.delete_key"}}
</button>
</div>
</div> </div>
<div class="activity meta"> {{end}}
<i>{{$.i18n.Tr "settings.add_on"}} <span>{{DateFmtShort .Created}}</span> — <i class="octicon octicon-info"></i> {{if .HasUsed}}{{$.i18n.Tr "settings.last_used"}} <span>{{DateFmtShort .Updated}}</span>{{else}}{{$.i18n.Tr "settings.no_activity"}}{{end}}</i>
</div>
</div>
<div class="two wide column">
<button class="ui red tiny button delete-button" data-url="{{$.Link}}/delete" data-id="{{.ID}}">
{{$.i18n.Tr "settings.delete_key"}}
</button>
</div>
</div> </div>
{{end}}
</div>
{{else}} {{else}}
{{.i18n.Tr "repo.settings.no_deploy_keys"}} {{.i18n.Tr "repo.settings.no_deploy_keys"}}
{{end}} {{end}}
</div> </div>
<br> <br>
@ -75,22 +75,22 @@
</div> </div>
<div class="ui small basic delete modal"> <div class="ui small basic delete modal">
<div class="ui icon header"> <div class="ui icon header">
<i class="trash icon"></i> <i class="trash icon"></i>
{{.i18n.Tr "repo.settings.deploy_key_deletion"}} {{.i18n.Tr "repo.settings.deploy_key_deletion"}}
</div> </div>
<div class="content"> <div class="content">
<p>{{.i18n.Tr "repo.settings.deploy_key_deletion_desc"}}</p> <p>{{.i18n.Tr "repo.settings.deploy_key_deletion_desc"}}</p>
</div> </div>
<div class="actions"> <div class="actions">
<div class="ui red basic inverted cancel button"> <div class="ui red basic inverted cancel button">
<i class="remove icon"></i> <i class="remove icon"></i>
{{.i18n.Tr "modal.no"}} {{.i18n.Tr "modal.no"}}
</div> </div>
<div class="ui green basic inverted ok button"> <div class="ui green basic inverted ok button">
<i class="checkmark icon"></i> <i class="checkmark icon"></i>
{{.i18n.Tr "modal.yes"}} {{.i18n.Tr "modal.yes"}}
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -7,30 +7,30 @@
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "repo.settings.githooks"}} {{.i18n.Tr "repo.settings.githooks"}}
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
<p>{{.i18n.Tr "repo.settings.githook_edit_desc"}}</p> <p>{{.i18n.Tr "repo.settings.githook_edit_desc"}}</p>
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
{{with .Hook}} {{with .Hook}}
<div class="inline field"> <div class="inline field">
<label>{{$.i18n.Tr "repo.settings.githook_name"}}</label> <label>{{$.i18n.Tr "repo.settings.githook_name"}}</label>
<span>{{.Name}}</span> <span>{{.Name}}</span>
</div> </div>
<div class="field"> <div class="field">
<label for="content">{{$.i18n.Tr "repo.settings.githook_content"}}</label> <label for="content">{{$.i18n.Tr "repo.settings.githook_content"}}</label>
<textarea id="content" name="content" rows="20" wrap="off">{{if .IsActive}}{{.Content}}{{else}}{{.Sample}}{{end}}</textarea> <textarea id="content" name="content" rows="20" wrap="off">{{if .IsActive}}{{.Content}}{{else}}{{.Sample}}{{end}}</textarea>
</div> </div>
<div class="inline field"> <div class="inline field">
<button class="ui green button">{{$.i18n.Tr "repo.settings.update_githook"}}</button> <button class="ui green button">{{$.i18n.Tr "repo.settings.update_githook"}}</button>
</div> </div>
{{end}} {{end}}
</form> </form>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -7,24 +7,24 @@
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "repo.settings.githooks"}} {{.i18n.Tr "repo.settings.githooks"}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<div class="ui hook list"> <div class="ui hook list">
<div class="item">
{{.i18n.Tr "repo.settings.githooks_desc" | Str2html}}
</div>
{{range .Hooks}}
<div class="item"> <div class="item">
<span class="text {{if .IsActive}}green{{else}}grey{{end}}"><i class="octicon octicon-primitive-dot"></i></span> {{.i18n.Tr "repo.settings.githooks_desc" | Str2html}}
<span>{{.Name}}</span>
<a class="text blue ui right" href="{{$.RepoLink}}/settings/hooks/git/{{.Name}}"><i class="fa fa-pencil"></i></a>
</div> </div>
{{end}} {{range .Hooks}}
</div> <div class="item">
</div> <span class="text {{if .IsActive}}green{{else}}grey{{end}}"><i class="octicon octicon-primitive-dot"></i></span>
</div> <span>{{.Name}}</span>
</div> <a class="text blue ui right" href="{{$.RepoLink}}/settings/hooks/git/{{.Name}}"><i class="fa fa-pencil"></i></a>
</div>
{{end}}
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,19 +1,19 @@
<div class="ui small basic delete modal"> <div class="ui small basic delete modal">
<div class="ui icon header"> <div class="ui icon header">
<i class="trash icon"></i> <i class="trash icon"></i>
{{.i18n.Tr "repo.settings.webhook_deletion"}} {{.i18n.Tr "repo.settings.webhook_deletion"}}
</div> </div>
<div class="content"> <div class="content">
<p>{{.i18n.Tr "repo.settings.webhook_deletion_desc"}}</p> <p>{{.i18n.Tr "repo.settings.webhook_deletion_desc"}}</p>
</div> </div>
<div class="actions"> <div class="actions">
<div class="ui red basic inverted cancel button"> <div class="ui red basic inverted cancel button">
<i class="remove icon"></i> <i class="remove icon"></i>
{{.i18n.Tr "modal.no"}} {{.i18n.Tr "modal.no"}}
</div> </div>
<div class="ui green basic inverted ok button"> <div class="ui green basic inverted ok button">
<i class="checkmark icon"></i> <i class="checkmark icon"></i>
{{.i18n.Tr "modal.yes"}} {{.i18n.Tr "modal.yes"}}
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,28 +1,28 @@
{{if eq .HookType "gogs"}} {{if eq .HookType "gogs"}}
<p>{{.i18n.Tr "repo.settings.add_webhook_desc" "http://gogs.io/docs/features/webhook.html" | Str2html}}</p> <p>{{.i18n.Tr "repo.settings.add_webhook_desc" "http://gogs.io/docs/features/webhook.html" | Str2html}}</p>
<form class="ui form" action="{{.BaseLink}}/settings/hooks/gogs/{{if .PageIsSettingsHooksNew}}new{{else}}{{.Webhook.ID}}{{end}}" method="post"> <form class="ui form" action="{{.BaseLink}}/settings/hooks/gogs/{{if .PageIsSettingsHooksNew}}new{{else}}{{.Webhook.ID}}{{end}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<div class="required field {{if .Err_PayloadURL}}error{{end}}"> <div class="required field {{if .Err_PayloadURL}}error{{end}}">
<label for="payload_url">{{.i18n.Tr "repo.settings.payload_url"}}</label> <label for="payload_url">{{.i18n.Tr "repo.settings.payload_url"}}</label>
<input id="payload_url" name="payload_url" type="url" value="{{.Webhook.URL}}" autofocus required> <input id="payload_url" name="payload_url" type="url" value="{{.Webhook.URL}}" autofocus required>
</div> </div>
<div class="field"> <div class="field">
<label>{{.i18n.Tr "repo.settings.content_type"}}</label> <label>{{.i18n.Tr "repo.settings.content_type"}}</label>
<div class="ui selection dropdown"> <div class="ui selection dropdown">
<input type="hidden" id="content_type" name="content_type" value="{{if .Webhook.ContentType}}{{.Webhook.ContentType}}{{else}}application/json{{end}}"> <input type="hidden" id="content_type" name="content_type" value="{{if .Webhook.ContentType}}{{.Webhook.ContentType}}{{else}}application/json{{end}}">
<div class="default text"></div> <div class="default text"></div>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
<div class="item" data-value="1">application/json</div> <div class="item" data-value="1">application/json</div>
<div class="item" data-value="2">application/x-www-form-urlencoded</div> <div class="item" data-value="2">application/x-www-form-urlencoded</div>
</div> </div>
</div> </div>
</div> </div>
<input class="fake" type="password"> <input class="fake" type="password">
<div class="field {{if .Err_Secret}}error{{end}}"> <div class="field {{if .Err_Secret}}error{{end}}">
<label for="secret">{{.i18n.Tr "repo.settings.secret"}}</label> <label for="secret">{{.i18n.Tr "repo.settings.secret"}}</label>
<input id="secret" name="secret" type="password" value="{{.Webhook.Secret}}" autocomplete="off"> <input id="secret" name="secret" type="password" value="{{.Webhook.Secret}}" autocomplete="off">
</div> </div>
{{template "repo/settings/hook_settings" .}} {{template "repo/settings/hook_settings" .}}
</form> </form>
{{end}} {{end}}

View File

@ -1,73 +1,73 @@
{{if .PageIsSettingsHooksEdit}} {{if .PageIsSettingsHooksEdit}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "repo.settings.recent_deliveries"}} {{.i18n.Tr "repo.settings.recent_deliveries"}}
{{if .IsRepositoryAdmin}} {{if .IsRepositoryAdmin}}
<div class="ui right"> <div class="ui right">
<button class="ui teal tiny button poping up" id="test-delivery" data-content= <button class="ui teal tiny button poping up" id="test-delivery" data-content=
"{{.i18n.Tr "repo.settings.webhook.test_delivery_desc"}}" data-variation="inverted tiny" data-link="{{.Link}}/test" data-redirect="{{.Link}}">{{.i18n.Tr "repo.settings.webhook.test_delivery"}}</button> "{{.i18n.Tr "repo.settings.webhook.test_delivery_desc"}}" data-variation="inverted tiny" data-link="{{.Link}}/test" data-redirect="{{.Link}}">{{.i18n.Tr "repo.settings.webhook.test_delivery"}}</button>
</div>
{{end}}
</h4>
<div class="ui attached table segment">
<div class="ui hook history list">
{{range .History}}
<div class="item">
<div class="meta">
{{if .IsSucceed}}
<span class="text green"><i class="octicon octicon-check"></i></span>
{{else}}
<span class="text red"><i class="octicon octicon-alert"></i></span>
{{end}}
<a class="ui blue sha label toggle button" data-target="#info-{{.ID}}">{{.UUID}}</a>
<div class="ui right">
<span class="text grey time">
{{.DeliveredString}}
</span>
</div>
</div> </div>
<div class="info hide" id="info-{{.ID}}"> {{end}}
<div class="ui top attached tabular menu"> </h4>
<a class="item active" data-tab="request-{{.ID}}">{{$.i18n.Tr "repo.settings.webhook.request"}}</a> <div class="ui attached table segment">
<a class="item" data-tab="response-{{.ID}}"> <div class="ui hook history list">
{{$.i18n.Tr "repo.settings.webhook.response"}} {{range .History}}
{{if .ResponseInfo}} <div class="item">
{{if .IsSucceed}} <div class="meta">
<span class="ui green label">{{.ResponseInfo.Status}}</span> {{if .IsSucceed}}
{{else}} <span class="text green"><i class="octicon octicon-check"></i></span>
<span class="ui red label">{{.ResponseInfo.Status}}</span> {{else}}
{{end}} <span class="text red"><i class="octicon octicon-alert"></i></span>
{{else}} {{end}}
<span class="ui label">N/A</span> <a class="ui blue sha label toggle button" data-target="#info-{{.ID}}">{{.UUID}}</a>
{{end}} <div class="ui right">
</a> <span class="text grey time">
</div> {{.DeliveredString}}
<div class="ui bottom attached tab segment active" data-tab="request-{{.ID}}"> </span>
{{if .RequestInfo}} </div>
<h5>{{$.i18n.Tr "repo.settings.webhook.headers"}}</h5> </div>
<pre class="raw"><strong>Request URL:</strong> {{.URL}} <div class="info hide" id="info-{{.ID}}">
<div class="ui top attached tabular menu">
<a class="item active" data-tab="request-{{.ID}}">{{$.i18n.Tr "repo.settings.webhook.request"}}</a>
<a class="item" data-tab="response-{{.ID}}">
{{$.i18n.Tr "repo.settings.webhook.response"}}
{{if .ResponseInfo}}
{{if .IsSucceed}}
<span class="ui green label">{{.ResponseInfo.Status}}</span>
{{else}}
<span class="ui red label">{{.ResponseInfo.Status}}</span>
{{end}}
{{else}}
<span class="ui label">N/A</span>
{{end}}
</a>
</div>
<div class="ui bottom attached tab segment active" data-tab="request-{{.ID}}">
{{if .RequestInfo}}
<h5>{{$.i18n.Tr "repo.settings.webhook.headers"}}</h5>
<pre class="raw"><strong>Request URL:</strong> {{.URL}}
<strong>Request method:</strong> POST <strong>Request method:</strong> POST
{{ range $key, $val := .RequestInfo.Headers }}<strong>{{$key}}:</strong> {{$val}} {{ range $key, $val := .RequestInfo.Headers }}<strong>{{$key}}:</strong> {{$val}}
{{end}}</pre> {{end}}</pre>
<h5>{{$.i18n.Tr "repo.settings.webhook.payload"}}</h5> <h5>{{$.i18n.Tr "repo.settings.webhook.payload"}}</h5>
<pre class="raw"><code class="json">{{.PayloadContent}}</code></pre> <pre class="raw"><code class="json">{{.PayloadContent}}</code></pre>
{{else}} {{else}}
N/A N/A
{{end}} {{end}}
</div> </div>
<div class="ui bottom attached tab segment" data-tab="response-{{.ID}}"> <div class="ui bottom attached tab segment" data-tab="response-{{.ID}}">
{{if .ResponseInfo}} {{if .ResponseInfo}}
<h5>{{$.i18n.Tr "repo.settings.webhook.headers"}}</h5> <h5>{{$.i18n.Tr "repo.settings.webhook.headers"}}</h5>
<pre class="raw">{{ range $key, $val := .ResponseInfo.Headers }}<strong>{{$key}}:</strong> {{$val}} <pre class="raw">{{ range $key, $val := .ResponseInfo.Headers }}<strong>{{$key}}:</strong> {{$val}}
{{end}}</pre> {{end}}</pre>
<h5>{{$.i18n.Tr "repo.settings.webhook.body"}}</h5> <h5>{{$.i18n.Tr "repo.settings.webhook.body"}}</h5>
<pre class="raw"><code>{{.ResponseInfo.Body}}</code></pre> <pre class="raw"><code>{{.ResponseInfo.Body}}</code></pre>
{{else}} {{else}}
N/A N/A
{{end}} {{end}}
</div>
</div>
</div> </div>
</div> {{end}}
</div> </div>
{{end}}
</div> </div>
</div> {{end}}
{{end}}

View File

@ -1,44 +1,44 @@
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "repo.settings.hooks"}} {{.i18n.Tr "repo.settings.hooks"}}
<div class="ui right"> <div class="ui right">
<div class="ui floating1 jump dropdown"> <div class="ui floating1 jump dropdown">
<div class="ui blue tiny button">{{.i18n.Tr "repo.settings.add_webhook"}}</div> <div class="ui blue tiny button">{{.i18n.Tr "repo.settings.add_webhook"}}</div>
<div class="menu"> <div class="menu">
<a class="item" href="{{.BaseLink}}/settings/hooks/gogs/new"> <a class="item" href="{{.BaseLink}}/settings/hooks/gogs/new">
<img class="img-10" src="{{AppSubUrl}}/img/favicon.png">Gogs <img class="img-10" src="{{AppSubUrl}}/img/favicon.png">Gogs
</a> </a>
<a class="item" href="{{.BaseLink}}/settings/hooks/slack/new"> <a class="item" href="{{.BaseLink}}/settings/hooks/slack/new">
<img class="img-10" src="{{AppSubUrl}}/img/slack.png">Slack <img class="img-10" src="{{AppSubUrl}}/img/slack.png">Slack
</a> </a>
</div>
</div>
</div>
</h4>
<div class="ui attached table segment">
<div class="ui hook list">
<div class="item">
{{.Description | Str2html}}
</div>
{{range .Webhooks}}
<div class="item">
{{if eq .LastStatus 1}}
<span class="text green"><i class="octicon octicon-check"></i></span>
{{else if eq .LastStatus 2}}
<span class="text red"><i class="octicon octicon-alert"></i></span>
{{else}}
<span class="text grey"><i class="octicon octicon-primitive-dot"></i></span>
{{end}}
<a href="{{$.BaseLink}}/settings/hooks/{{.ID}}">{{.URL}}</a>
<div class="ui right">
<span class="text blue"><a href="{{$.BaseLink}}/settings/hooks/{{.ID}}"><i class="fa fa-pencil"></i></a></span>
<span class="text red"><a class="delete-button" data-url="{{$.Link}}/delete" data-id="{{.ID}}"><i class="fa fa-times"></i></a></span>
</div> </div>
</div> </div>
{{end}} </div>
</div> </h4>
</div> <div class="ui attached table segment">
<div class="ui hook list">
<div class="item">
{{.Description | Str2html}}
</div>
{{range .Webhooks}}
<div class="item">
{{if eq .LastStatus 1}}
<span class="text green"><i class="octicon octicon-check"></i></span>
{{else if eq .LastStatus 2}}
<span class="text red"><i class="octicon octicon-alert"></i></span>
{{else}}
<span class="text grey"><i class="octicon octicon-primitive-dot"></i></span>
{{end}}
<a href="{{$.BaseLink}}/settings/hooks/{{.ID}}">{{.URL}}</a>
<div class="ui right">
<span class="text blue"><a href="{{$.BaseLink}}/settings/hooks/{{.ID}}"><i class="fa fa-pencil"></i></a></span>
<span class="text red"><a class="delete-button" data-url="{{$.Link}}/delete" data-id="{{.ID}}"><i class="fa fa-times"></i></a></span>
</div>
</div>
{{end}}
</div>
</div>
</div> </div>
{{template "repo/settings/hook_delete_modal" .}} {{template "repo/settings/hook_delete_modal" .}}

View File

@ -7,22 +7,22 @@
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{if .PageIsSettingsHooksNew}}{{.i18n.Tr "repo.settings.add_webhook"}}{{else}}{{.i18n.Tr "repo.settings.update_webhook"}}{{end}} {{if .PageIsSettingsHooksNew}}{{.i18n.Tr "repo.settings.add_webhook"}}{{else}}{{.i18n.Tr "repo.settings.update_webhook"}}{{end}}
<div class="ui right"> <div class="ui right">
{{if eq .HookType "gogs"}} {{if eq .HookType "gogs"}}
<img class="img-13" src="{{AppSubUrl}}/img/favicon.png"> <img class="img-13" src="{{AppSubUrl}}/img/favicon.png">
{{else if eq .HookType "slack"}} {{else if eq .HookType "slack"}}
<img class="img-13" src="{{AppSubUrl}}/img/slack.png"> <img class="img-13" src="{{AppSubUrl}}/img/slack.png">
{{end}} {{end}}
</div> </div>
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
{{template "repo/settings/hook_gogs" .}} {{template "repo/settings/hook_gogs" .}}
{{template "repo/settings/hook_slack" .}} {{template "repo/settings/hook_slack" .}}
</div> </div>
{{template "repo/settings/hook_history" .}} {{template "repo/settings/hook_history" .}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,66 +1,66 @@
<div class="field"> <div class="field">
<h4>{{.i18n.Tr "repo.settings.event_desc"}}</h4> <h4>{{.i18n.Tr "repo.settings.event_desc"}}</h4>
<div class="grouped event type fields"> <div class="grouped event type fields">
<div class="field"> <div class="field">
<div class="ui radio non-events checkbox"> <div class="ui radio non-events checkbox">
<input class="hidden" name="events" type="radio" value="push_only" {{if or .PageIsSettingsHooksNew .Webhook.PushOnly}}checked{{end}}> <input class="hidden" name="events" type="radio" value="push_only" {{if or .PageIsSettingsHooksNew .Webhook.PushOnly}}checked{{end}}>
<label>{{.i18n.Tr "repo.settings.event_push_only" | Str2html}}</label> <label>{{.i18n.Tr "repo.settings.event_push_only" | Str2html}}</label>
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<div class="ui radio non-events checkbox"> <div class="ui radio non-events checkbox">
<input class="hidden" name="events" type="radio" value="send_everything" {{if .Webhook.SendEverything}}checked{{end}}> <input class="hidden" name="events" type="radio" value="send_everything" {{if .Webhook.SendEverything}}checked{{end}}>
<label>{{.i18n.Tr "repo.settings.event_send_everything" | Str2html}}</label> <label>{{.i18n.Tr "repo.settings.event_send_everything" | Str2html}}</label>
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<div class="ui radio events checkbox"> <div class="ui radio events checkbox">
<input class="hidden" name="events" type="radio" value="choose_events" {{if .Webhook.ChooseEvents}}checked{{end}}> <input class="hidden" name="events" type="radio" value="choose_events" {{if .Webhook.ChooseEvents}}checked{{end}}>
<label>{{.i18n.Tr "repo.settings.event_choose" | Str2html}}</label> <label>{{.i18n.Tr "repo.settings.event_choose" | Str2html}}</label>
</div> </div>
</div> </div>
</div> </div>
<div class="events fields ui grid" {{if not .Webhook.ChooseEvents}}style="display:none"{{end}}> <div class="events fields ui grid" {{if not .Webhook.ChooseEvents}}style="display:none"{{end}}>
<!-- Create --> <!-- Create -->
<div class="seven wide column"> <div class="seven wide column">
<div class="field"> <div class="field">
<div class="ui checkbox"> <div class="ui checkbox">
<input class="hidden" name="create" type="checkbox" tabindex="0" {{if .Webhook.Create}}checked{{end}}> <input class="hidden" name="create" type="checkbox" tabindex="0" {{if .Webhook.Create}}checked{{end}}>
<label>{{.i18n.Tr "repo.settings.event_create"}}</label> <label>{{.i18n.Tr "repo.settings.event_create"}}</label>
<span class="help">{{.i18n.Tr "repo.settings.event_create_desc"}}</span> <span class="help">{{.i18n.Tr "repo.settings.event_create_desc"}}</span>
</div> </div>
</div> </div>
</div> </div>
<!-- Push --> <!-- Push -->
<div class="seven wide column"> <div class="seven wide column">
<div class="field"> <div class="field">
<div class="ui checkbox"> <div class="ui checkbox">
<input class="hidden" name="push" type="checkbox" tabindex="0" {{if .Webhook.Push}}checked{{end}}> <input class="hidden" name="push" type="checkbox" tabindex="0" {{if .Webhook.Push}}checked{{end}}>
<label>{{.i18n.Tr "repo.settings.event_push"}}</label> <label>{{.i18n.Tr "repo.settings.event_push"}}</label>
<span class="help">{{.i18n.Tr "repo.settings.event_push_desc"}}</span> <span class="help">{{.i18n.Tr "repo.settings.event_push_desc"}}</span>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<input class="hidden" name="active" type="checkbox" tabindex="0" {{if or .PageIsSettingsHooksNew .Webhook.IsActive}}checked{{end}}> <input class="hidden" name="active" type="checkbox" tabindex="0" {{if or .PageIsSettingsHooksNew .Webhook.IsActive}}checked{{end}}>
<label>{{.i18n.Tr "repo.settings.active"}}</label> <label>{{.i18n.Tr "repo.settings.active"}}</label>
<span class="help">{{.i18n.Tr "repo.settings.active_helper"}}</span> <span class="help">{{.i18n.Tr "repo.settings.active_helper"}}</span>
</div> </div>
</div> </div>
<div class="field"> <div class="field">
{{if .PageIsSettingsHooksNew}} {{if .PageIsSettingsHooksNew}}
<button class="ui green button">{{.i18n.Tr "repo.settings.add_webhook"}}</button> <button class="ui green button">{{.i18n.Tr "repo.settings.add_webhook"}}</button>
{{else}} {{else}}
<button class="ui green button">{{.i18n.Tr "repo.settings.update_webhook"}}</button> <button class="ui green button">{{.i18n.Tr "repo.settings.update_webhook"}}</button>
<a class="ui red delete-button button" data-url="{{.BaseLink}}/settings/hooks/delete" data-id="{{.Webhook.ID}}">{{.i18n.Tr "repo.settings.delete_webhook"}}</a> <a class="ui red delete-button button" data-url="{{.BaseLink}}/settings/hooks/delete" data-id="{{.Webhook.ID}}">{{.i18n.Tr "repo.settings.delete_webhook"}}</a>
{{end}} {{end}}
</div> </div>
{{template "repo/settings/hook_delete_modal" .}} {{template "repo/settings/hook_delete_modal" .}}

View File

@ -1,28 +1,28 @@
{{if eq .HookType "slack"}} {{if eq .HookType "slack"}}
<p>{{.i18n.Tr "repo.settings.add_slack_hook_desc" "http://slack.com" | Str2html}}</p> <p>{{.i18n.Tr "repo.settings.add_slack_hook_desc" "http://slack.com" | Str2html}}</p>
<form class="ui form" action="{{.BaseLink}}/settings/hooks/slack/{{if .PageIsSettingsHooksNew}}new{{else}}{{.Webhook.ID}}{{end}}" method="post"> <form class="ui form" action="{{.BaseLink}}/settings/hooks/slack/{{if .PageIsSettingsHooksNew}}new{{else}}{{.Webhook.ID}}{{end}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<div class="required field {{if .Err_PayloadURL}}error{{end}}"> <div class="required field {{if .Err_PayloadURL}}error{{end}}">
<label for="payload_url">{{.i18n.Tr "repo.settings.payload_url"}}</label> <label for="payload_url">{{.i18n.Tr "repo.settings.payload_url"}}</label>
<input id="payload_url" name="payload_url" type="url" value="{{.Webhook.URL}}" autofocus required> <input id="payload_url" name="payload_url" type="url" value="{{.Webhook.URL}}" autofocus required>
</div> </div>
<div class="required field {{if .Err_Channel}}error{{end}}"> <div class="required field {{if .Err_Channel}}error{{end}}">
<label for="channel">{{.i18n.Tr "repo.settings.slack_channel"}}</label> <label for="channel">{{.i18n.Tr "repo.settings.slack_channel"}}</label>
<input id="channel" name="channel" value="{{.SlackHook.Channel}}" placeholder="e.g. #general" required> <input id="channel" name="channel" value="{{.SlackHook.Channel}}" placeholder="e.g. #general" required>
</div> </div>
<div class="field"> <div class="field">
<label for="username">{{.i18n.Tr "repo.settings.slack_username"}}</label> <label for="username">{{.i18n.Tr "repo.settings.slack_username"}}</label>
<input id="username" name="username" value="{{.SlackHook.Username}}" placeholder="e.g. Gogs"> <input id="username" name="username" value="{{.SlackHook.Username}}" placeholder="e.g. Gogs">
</div> </div>
<div class="field"> <div class="field">
<label for="icon_url">{{.i18n.Tr "repo.settings.slack_icon_url"}}</label> <label for="icon_url">{{.i18n.Tr "repo.settings.slack_icon_url"}}</label>
<input id="icon_url" name="icon_url" value="{{.SlackHook.IconURL}}" placeholder="e.g. https://example.com/img/favicon.png"> <input id="icon_url" name="icon_url" value="{{.SlackHook.IconURL}}" placeholder="e.g. https://example.com/img/favicon.png">
</div> </div>
<div class="field"> <div class="field">
<label for="color">{{.i18n.Tr "repo.settings.slack_color"}}</label> <label for="color">{{.i18n.Tr "repo.settings.slack_color"}}</label>
<input id="color" name="color" value="{{.SlackHook.Color}}" placeholder="e.g. #dd4b39, good, warning, danger"> <input id="color" name="color" value="{{.SlackHook.Color}}" placeholder="e.g. #dd4b39, good, warning, danger">
</div> </div>
{{template "repo/settings/hook_settings" .}} {{template "repo/settings/hook_settings" .}}
</form> </form>
{{end}} {{end}}

View File

@ -5,7 +5,7 @@
<div class="ui grid"> <div class="ui grid">
{{template "repo/settings/navbar" .}} {{template "repo/settings/navbar" .}}
{{template "repo/settings/hook_list" .}} {{template "repo/settings/hook_list" .}}
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,14 +1,14 @@
<div id="setting-menu" class="grid-1-5 panel panel-radius left"> <div id="setting-menu" class="grid-1-5 panel panel-radius left">
<p class="panel-header"><strong>{{.i18n.Tr "repo.settings"}}</strong></p> <p class="panel-header"><strong>{{.i18n.Tr "repo.settings"}}</strong></p>
<div class="panel-body"> <div class="panel-body">
<ul class="menu menu-vertical switching-list grid-1-5 left"> <ul class="menu menu-vertical switching-list grid-1-5 left">
<li {{if .PageIsSettingsOptions}}class="current"{{end}}><a href="{{.RepoLink}}/settings">{{.i18n.Tr "repo.settings.options"}}</a></li> <li {{if .PageIsSettingsOptions}}class="current"{{end}}><a href="{{.RepoLink}}/settings">{{.i18n.Tr "repo.settings.options"}}</a></li>
<li {{if .PageIsSettingsCollaboration}}class="current"{{end}}><a href="{{.RepoLink}}/settings/collaboration">{{.i18n.Tr "repo.settings.collaboration"}}</a></li> <li {{if .PageIsSettingsCollaboration}}class="current"{{end}}><a href="{{.RepoLink}}/settings/collaboration">{{.i18n.Tr "repo.settings.collaboration"}}</a></li>
<li {{if .PageIsSettingsHooks}}class="current"{{end}}><a href="{{.RepoLink}}/settings/hooks">{{.i18n.Tr "repo.settings.hooks"}}</a></li> <li {{if .PageIsSettingsHooks}}class="current"{{end}}><a href="{{.RepoLink}}/settings/hooks">{{.i18n.Tr "repo.settings.hooks"}}</a></li>
{{if or .SignedUser.AllowGitHook .SignedUser.IsAdmin}} {{if or .SignedUser.AllowGitHook .SignedUser.IsAdmin}}
<li {{if .PageIsSettingsGitHooks}}class="current"{{end}}><a href="{{.RepoLink}}/settings/hooks/git">{{.i18n.Tr "repo.settings.githooks"}}</a></li> <li {{if .PageIsSettingsGitHooks}}class="current"{{end}}><a href="{{.RepoLink}}/settings/hooks/git">{{.i18n.Tr "repo.settings.githooks"}}</a></li>
{{end}} {{end}}
<li {{if .PageIsSettingsKeys}}class="current"{{end}}><a href="{{.RepoLink}}/settings/keys">{{.i18n.Tr "repo.settings.deploy_keys"}}</a></li> <li {{if .PageIsSettingsKeys}}class="current"{{end}}><a href="{{.RepoLink}}/settings/keys">{{.i18n.Tr "repo.settings.deploy_keys"}}</a></li>
</ul> </ul>
</div> </div>
</div> </div>

View File

@ -1,22 +1,22 @@
<div class="four wide column"> <div class="four wide column">
<div class="ui vertical menu"> <div class="ui vertical menu">
<div class="header item">{{.i18n.Tr "repo.settings"}}</div> <div class="header item">{{.i18n.Tr "repo.settings"}}</div>
<a class="{{if .PageIsSettingsOptions}}active{{end}} item" href="{{.RepoLink}}/settings"> <a class="{{if .PageIsSettingsOptions}}active{{end}} item" href="{{.RepoLink}}/settings">
{{.i18n.Tr "repo.settings.options"}} {{.i18n.Tr "repo.settings.options"}}
</a> </a>
<a class="{{if .PageIsSettingsCollaboration}}active{{end}} item" href="{{.RepoLink}}/settings/collaboration"> <a class="{{if .PageIsSettingsCollaboration}}active{{end}} item" href="{{.RepoLink}}/settings/collaboration">
{{.i18n.Tr "repo.settings.collaboration"}} {{.i18n.Tr "repo.settings.collaboration"}}
</a> </a>
<a class="{{if .PageIsSettingsHooks}}active{{end}} item" href="{{.RepoLink}}/settings/hooks"> <a class="{{if .PageIsSettingsHooks}}active{{end}} item" href="{{.RepoLink}}/settings/hooks">
{{.i18n.Tr "repo.settings.hooks"}} {{.i18n.Tr "repo.settings.hooks"}}
</a> </a>
{{if .SignedUser.CanEditGitHook}} {{if .SignedUser.CanEditGitHook}}
<a class="{{if .PageIsSettingsGitHooks}}active{{end}} item" href="{{.RepoLink}}/settings/hooks/git"> <a class="{{if .PageIsSettingsGitHooks}}active{{end}} item" href="{{.RepoLink}}/settings/hooks/git">
{{.i18n.Tr "repo.settings.githooks"}} {{.i18n.Tr "repo.settings.githooks"}}
</a> </a>
{{end}} {{end}}
<a class="{{if .PageIsSettingsKeys}}active{{end}} item" href="{{.RepoLink}}/settings/keys"> <a class="{{if .PageIsSettingsKeys}}active{{end}} item" href="{{.RepoLink}}/settings/keys">
{{.i18n.Tr "repo.settings.deploy_keys"}} {{.i18n.Tr "repo.settings.deploy_keys"}}
</a> </a>
</div> </div>
</div> </div>

View File

@ -7,121 +7,121 @@
<div class="twelve wide column content"> <div class="twelve wide column content">
{{template "base/alert" .}} {{template "base/alert" .}}
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "repo.settings.basic_settings"}} {{.i18n.Tr "repo.settings.basic_settings"}}
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<input type="hidden" name="action" value="update"> <input type="hidden" name="action" value="update">
<div class="required field {{if .Err_RepoName}}error{{end}}"> <div class="required field {{if .Err_RepoName}}error{{end}}">
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}<span class="text red hide" id="repo-name-change-prompt"> {{.i18n.Tr "repo.settings.change_reponame_prompt"}}</span></label> <label for="repo_name">{{.i18n.Tr "repo.repo_name"}}<span class="text red hide" id="repo-name-change-prompt"> {{.i18n.Tr "repo.settings.change_reponame_prompt"}}</span></label>
<input id="repo_name" name="repo_name" value="{{.Repository.Name}}" data-repo-name="{{.Repository.Name}}" autofocus required> <input id="repo_name" name="repo_name" value="{{.Repository.Name}}" data-repo-name="{{.Repository.Name}}" autofocus required>
</div> </div>
<div class="field {{if .Err_Description}}error{{end}}"> <div class="field {{if .Err_Description}}error{{end}}">
<label for="description">{{$.i18n.Tr "repo.repo_desc"}}</label> <label for="description">{{$.i18n.Tr "repo.repo_desc"}}</label>
<textarea id="description" name="description" rows="2">{{.Repository.Description}}</textarea> <textarea id="description" name="description" rows="2">{{.Repository.Description}}</textarea>
</div> </div>
<div class="field {{if .Err_Website}}error{{end}}"> <div class="field {{if .Err_Website}}error{{end}}">
<label for="website">{{.i18n.Tr "repo.settings.site"}}</label> <label for="website">{{.i18n.Tr "repo.settings.site"}}</label>
<input id="website" name="website" type="url" value="{{.Repository.Website}}"> <input id="website" name="website" type="url" value="{{.Repository.Website}}">
</div> </div>
{{if not .Repository.IsBare}} {{if not .Repository.IsBare}}
<div class="required inline field"> <div class="required inline field">
<label>{{.i18n.Tr "repo.default_branch"}}</label> <label>{{.i18n.Tr "repo.default_branch"}}</label>
<div class="ui selection dropdown"> <div class="ui selection dropdown">
<input type="hidden" id="branch" name="branch" value="{{.Repository.DefaultBranch}}"> <input type="hidden" id="branch" name="branch" value="{{.Repository.DefaultBranch}}">
<div class="text">{{.Repository.DefaultBranch}}</div> <div class="text">{{.Repository.DefaultBranch}}</div>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu"> <div class="menu">
{{range .Branches}} {{range .Branches}}
<div class="item" data-value="{{.}}">{{.}}</div> <div class="item" data-value="{{.}}">{{.}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
{{end}} {{end}}
{{if not .Repository.IsFork}} {{if not .Repository.IsFork}}
<div class="inline field"> <div class="inline field">
<label>{{.i18n.Tr "repo.visibility"}}</label> <label>{{.i18n.Tr "repo.visibility"}}</label>
<div class="ui checkbox"> <div class="ui checkbox">
<input name="private" type="checkbox" {{if .Repository.IsPrivate}}checked{{end}}> <input name="private" type="checkbox" {{if .Repository.IsPrivate}}checked{{end}}>
<label>{{.i18n.Tr "repo.visiblity_helper" | Safe}} {{if .Repository.NumForks}}<span class="text red">{{.i18n.Tr "repo.visiblity_fork_helper"}}</span>{{end}}</label> <label>{{.i18n.Tr "repo.visiblity_helper" | Safe}} {{if .Repository.NumForks}}<span class="text red">{{.i18n.Tr "repo.visiblity_fork_helper"}}</span>{{end}}</label>
</div> </div>
</div> </div>
{{end}} {{end}}
{{if .Repository.IsMirror}} {{if .Repository.IsMirror}}
<div class="inline field {{if .Err_Interval}}error{{end}}"> <div class="inline field {{if .Err_Interval}}error{{end}}">
<label for="interval">{{.i18n.Tr "repo.mirror_interval"}}</label> <label for="interval">{{.i18n.Tr "repo.mirror_interval"}}</label>
<input id="interval" name="interval" type="number" value="{{.MirrorInterval}}"> <input id="interval" name="interval" type="number" value="{{.MirrorInterval}}">
</div> </div>
{{end}} {{end}}
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="field"> <div class="field">
<button class="ui green button">{{$.i18n.Tr "repo.settings.update_settings"}}</button> <button class="ui green button">{{$.i18n.Tr "repo.settings.update_settings"}}</button>
</div> </div>
</form> </form>
</div> </div>
<h4 class="ui top attached header"> <h4 class="ui top attached header">
{{.i18n.Tr "repo.settings.advanced_settings"}} {{.i18n.Tr "repo.settings.advanced_settings"}}
</h4> </h4>
<div class="ui attached segment"> <div class="ui attached segment">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<input type="hidden" name="action" value="advanced"> <input type="hidden" name="action" value="advanced">
<div class="inline field"> <div class="inline field">
<label>{{.i18n.Tr "repo.wiki"}}</label> <label>{{.i18n.Tr "repo.wiki"}}</label>
<div class="ui checkbox"> <div class="ui checkbox">
<input name="enable_wiki" type="checkbox" {{if .Repository.EnableWiki}}checked{{end}}> <input name="enable_wiki" type="checkbox" {{if .Repository.EnableWiki}}checked{{end}}>
<label>{{.i18n.Tr "repo.settings.wiki_desc"}}</label> <label>{{.i18n.Tr "repo.settings.wiki_desc"}}</label>
</div> </div>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="inline field"> <div class="inline field">
<label>{{.i18n.Tr "repo.issues"}}</label> <label>{{.i18n.Tr "repo.issues"}}</label>
<div class="ui checkbox"> <div class="ui checkbox">
<input name="enable_issues" type="checkbox" {{if .Repository.EnableIssues}}checked{{end}}> <input name="enable_issues" type="checkbox" {{if .Repository.EnableIssues}}checked{{end}}>
<label>{{.i18n.Tr "repo.settings.issues_desc"}}</label> <label>{{.i18n.Tr "repo.settings.issues_desc"}}</label>
</div> </div>
</div> </div>
<div class="inline field"> <div class="inline field">
<div class="ui checkbox"> <div class="ui checkbox">
<input name="enable_external_tracker" type="checkbox" {{if .Repository.EnableExternalTracker}}checked{{end}}> <input name="enable_external_tracker" type="checkbox" {{if .Repository.EnableExternalTracker}}checked{{end}}>
<label>{{.i18n.Tr "repo.settings.use_external_issue_tracker"}}</label> <label>{{.i18n.Tr "repo.settings.use_external_issue_tracker"}}</label>
</div> </div>
</div> </div>
<div class="field"> <div class="field">
<label for="tracker_url_format">{{.i18n.Tr "repo.settings.tracker_url_format"}}</label> <label for="tracker_url_format">{{.i18n.Tr "repo.settings.tracker_url_format"}}</label>
<input id="tracker_url_format" name="tracker_url_format" value="{{.Repository.ExternalTrackerFormat}}" placeholder="e.g. https://github.com/{user}/{repo}/issues/{index}"> <input id="tracker_url_format" name="tracker_url_format" value="{{.Repository.ExternalTrackerFormat}}" placeholder="e.g. https://github.com/{user}/{repo}/issues/{index}">
<p class="help">{{.i18n.Tr "repo.settings.tracker_url_format_desc" | Str2html}}</p> <p class="help">{{.i18n.Tr "repo.settings.tracker_url_format_desc" | Str2html}}</p>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="inline field"> <div class="inline field">
<label>{{.i18n.Tr "repo.pulls"}}</label> <label>{{.i18n.Tr "repo.pulls"}}</label>
<div class="ui checkbox"> <div class="ui checkbox">
<input name="enable_pulls" type="checkbox" {{if .Repository.EnablePulls}}checked{{end}}> <input name="enable_pulls" type="checkbox" {{if .Repository.EnablePulls}}checked{{end}}>
<label>{{.i18n.Tr "repo.settings.pulls_desc"}}</label> <label>{{.i18n.Tr "repo.settings.pulls_desc"}}</label>
</div> </div>
</div> </div>
<div class="ui divider"></div>
<div class="field">
<button class="ui green button">{{$.i18n.Tr "repo.settings.update_settings"}}</button>
</div>
</form>
</div>
<h4 class="ui top attached warning header"> <div class="ui divider"></div>
{{.i18n.Tr "repo.settings.danger_zone"}} <div class="field">
</h4> <button class="ui green button">{{$.i18n.Tr "repo.settings.update_settings"}}</button>
<div class="ui attached warning table danger segment"> </div>
</form>
</div>
<h4 class="ui top attached warning header">
{{.i18n.Tr "repo.settings.danger_zone"}}
</h4>
<div class="ui attached warning table danger segment">
<div class="item"> <div class="item">
<div class="ui right"> <div class="ui right">
<button class="ui basic red show-modal button" data-modal="#transfer-repo-modal">{{.i18n.Tr "repo.settings.transfer"}}</button> <button class="ui basic red show-modal button" data-modal="#transfer-repo-modal">{{.i18n.Tr "repo.settings.transfer"}}</button>
@ -131,7 +131,7 @@
<p>{{.i18n.Tr "repo.settings.transfer_desc"}}</p> <p>{{.i18n.Tr "repo.settings.transfer_desc"}}</p>
</div> </div>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="item"> <div class="item">
@ -143,23 +143,23 @@
<p>{{.i18n.Tr "repo.settings.delete_desc"}}</p> <p>{{.i18n.Tr "repo.settings.delete_desc"}}</p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="ui small modal" id="transfer-repo-modal"> <div class="ui small modal" id="transfer-repo-modal">
<div class="header"> <div class="header">
{{.i18n.Tr "repo.settings.transfer"}} {{.i18n.Tr "repo.settings.transfer"}}
</div> </div>
<div class="content"> <div class="content">
<div class="ui warning message text left"> <div class="ui warning message text left">
{{.i18n.Tr "repo.settings.transfer_notices_1" | Safe}} <br> {{.i18n.Tr "repo.settings.transfer_notices_1" | Safe}} <br>
{{.i18n.Tr "repo.settings.transfer_notices_2" | Safe}} {{.i18n.Tr "repo.settings.transfer_notices_2" | Safe}}
</div> </div>
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<input type="hidden" name="action" value="transfer"> <input type="hidden" name="action" value="transfer">
<div class="field"> <div class="field">
<label> <label>
@ -167,28 +167,28 @@
<span class="text red">{{.Repository.Name}}</span> <span class="text red">{{.Repository.Name}}</span>
</label> </label>
</div> </div>
<div class="required field"> <div class="required field">
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label> <label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
<input id="repo_name" name="repo_name" required> <input id="repo_name" name="repo_name" required>
</div> </div>
<div class="required field"> <div class="required field">
<label for="new_owner_name">{{.i18n.Tr "repo.settings.transfer_owner"}}</label> <label for="new_owner_name">{{.i18n.Tr "repo.settings.transfer_owner"}}</label>
<input id="new_owner_name" name="new_owner_name" required> <input id="new_owner_name" name="new_owner_name" required>
</div> </div>
<div class="text right actions"> <div class="text right actions">
<div class="ui cancel button">{{.i18n.Tr "settings.cancel"}}</div> <div class="ui cancel button">{{.i18n.Tr "settings.cancel"}}</div>
<button class="ui red button">{{.i18n.Tr "repo.settings.make_transfer"}}</button> <button class="ui red button">{{.i18n.Tr "repo.settings.make_transfer"}}</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
<div class="ui small modal" id="delete-repo-modal"> <div class="ui small modal" id="delete-repo-modal">
<div class="header"> <div class="header">
{{.i18n.Tr "repo.settings.delete"}} {{.i18n.Tr "repo.settings.delete"}}
</div> </div>
<div class="content"> <div class="content">
<div class="ui warning message text left"> <div class="ui warning message text left">
{{.i18n.Tr "repo.settings.delete_notices_1" | Safe}} <br> {{.i18n.Tr "repo.settings.delete_notices_1" | Safe}} <br>
{{.i18n.Tr "repo.settings.delete_notices_2" | Safe}} {{.i18n.Tr "repo.settings.delete_notices_2" | Safe}}
@ -196,27 +196,27 @@
{{.i18n.Tr "repo.settings.delete_notices_fork_1" | Safe}} <br> {{.i18n.Tr "repo.settings.delete_notices_fork_1" | Safe}} <br>
{{.i18n.Tr "repo.settings.delete_notices_fork_2" | Safe}} <br> {{.i18n.Tr "repo.settings.delete_notices_fork_2" | Safe}} <br>
{{.i18n.Tr "repo.settings.delete_notices_fork_3" | Safe}} {{.i18n.Tr "repo.settings.delete_notices_fork_3" | Safe}}
{{end}} {{end}}
</div>
<form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}}
<input type="hidden" name="action" value="delete">
<div class="field">
<label>
{{.i18n.Tr "repo.settings.transfer_form_title"}}
<span class="text red">{{.Repository.Name}}</span>
</label>
</div> </div>
<form class="ui form" action="{{.Link}}" method="post"> <div class="required field">
{{.CsrfTokenHtml}} <label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
<input type="hidden" name="action" value="delete"> <input id="repo_name" name="repo_name" required>
<div class="field"> </div>
<label>
{{.i18n.Tr "repo.settings.transfer_form_title"}} <div class="text right actions">
<span class="text red">{{.Repository.Name}}</span> <div class="ui cancel button">{{.i18n.Tr "settings.cancel"}}</div>
</label> <button class="ui red button">{{.i18n.Tr "repo.settings.confirm_delete"}}</button>
</div> </div>
<div class="required field"> </form>
<label for="repo_name">{{.i18n.Tr "repo.repo_name"}}</label>
<input id="repo_name" name="repo_name" required>
</div>
<div class="text right actions">
<div class="ui cancel button">{{.i18n.Tr "settings.cancel"}}</div>
<button class="ui red button">{{.i18n.Tr "repo.settings.confirm_delete"}}</button>
</div>
</form>
</div>
</div> </div>
{{template "base/footer" .}} </div>
{{template "base/footer" .}}

View File

@ -1,50 +1,50 @@
<div id="file-content"> <div id="file-content">
<h4 class="ui top attached header" id="{{if .ReadmeExist}}repo-readme{{else}}repo-read-file{{end}}"> <h4 class="ui top attached header" id="{{if .ReadmeExist}}repo-readme{{else}}repo-read-file{{end}}">
{{if .ReadmeExist}} {{if .ReadmeExist}}
<i class="book icon ui left"></i> <i class="book icon ui left"></i>
{{if .ReadmeInList}} {{if .ReadmeInList}}
<strong>{{.FileName}}</strong> <strong>{{.FileName}}</strong>
{{else}} {{else}}
<strong>{{.FileName}}</strong> <span class="text grey normal">{{FileSize .FileSize}}</span> <strong>{{.FileName}}</strong> <span class="text grey normal">{{FileSize .FileSize}}</span>
{{end}} {{end}}
{{else}} {{else}}
<i class="file text outline icon ui left"></i> <i class="file text outline icon ui left"></i>
<strong>{{.FileName}}</strong> <span class="text grey normal">{{FileSize .FileSize}}</span> <strong>{{.FileName}}</strong> <span class="text grey normal">{{FileSize .FileSize}}</span>
{{end}} {{end}}
{{if not .ReadmeInList}} {{if not .ReadmeInList}}
<div class="ui right"> <div class="ui right">
<div class="ui small grey basic buttons"> <div class="ui small grey basic buttons">
{{if not .IsCommit}} {{if not .IsCommit}}
<a class="ui button" href="{{.RepoLink}}/src/{{.CommitID}}/{{EscapePound .TreeName}}">{{.i18n.Tr "repo.file_permalink"}}</a> <a class="ui button" href="{{.RepoLink}}/src/{{.CommitID}}/{{EscapePound .TreeName}}">{{.i18n.Tr "repo.file_permalink"}}</a>
{{end}} {{end}}
<a class="ui button" href="{{.RepoLink}}/commits/{{EscapePound .BranchName}}/{{EscapePound .TreeName}}">{{.i18n.Tr "repo.file_history"}}</a> <a class="ui button" href="{{.RepoLink}}/commits/{{EscapePound .BranchName}}/{{EscapePound .TreeName}}">{{.i18n.Tr "repo.file_history"}}</a>
<a class="ui button" href="{{EscapePound .FileLink}}">{{.i18n.Tr "repo.file_raw"}}</a> <a class="ui button" href="{{EscapePound .FileLink}}">{{.i18n.Tr "repo.file_raw"}}</a>
</div> </div>
</div> </div>
{{end}} {{end}}
</h4> </h4>
<div class="ui attached table segment"> <div class="ui attached table segment">
<div class="file-view {{if .ReadmeExist}}markdown{{else if .IsFileText}}code-view{{end}}"> <div class="file-view {{if .ReadmeExist}}markdown{{else if .IsFileText}}code-view{{end}}">
{{if .ReadmeExist}} {{if .ReadmeExist}}
{{if .FileContent}}{{.FileContent | Str2html}}{{end}} {{if .FileContent}}{{.FileContent | Str2html}}{{end}}
{{else if not .IsFileText}} {{else if not .IsFileText}}
<div class="view-raw"> <div class="view-raw">
{{if .IsImageFile}} {{if .IsImageFile}}
<img src="{{EscapePound .FileLink}}"> <img src="{{EscapePound .FileLink}}">
{{else}} {{else}}
<a href="{{EscapePound .FileLink}}" rel="nofollow" class="btn btn-gray btn-radius">{{.i18n.Tr "repo.file_view_raw"}}</a> <a href="{{EscapePound .FileLink}}" rel="nofollow" class="btn btn-gray btn-radius">{{.i18n.Tr "repo.file_view_raw"}}</a>
{{end}} {{end}}
</div> </div>
{{else if .FileSize}} {{else if .FileSize}}
<table> <table>
<tbody> <tbody>
<tr> <tr>
<td class="lines-num"></td> <td class="lines-num"></td>
<td class="lines-code"><pre class="{{if .FileExt}}lang-{{.FileExt}}{{end}}"><code><ol class="linenums">{{.FileContent}}</ol></code></pre></td> <td class="lines-code"><pre class="{{if .FileExt}}lang-{{.FileExt}}{{end}}"><code><ol class="linenums">{{.FileContent}}</ol></code></pre></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,56 +1,56 @@
<table id="repo-files-table" class="ui fixed single line table"> <table id="repo-files-table" class="ui fixed single line table">
<thead> <thead>
<tr> <tr>
<th class="four wide"> <th class="four wide">
{{if .LastCommitUser}} {{if .LastCommitUser}}
<img class="ui avatar image img-12" src="{{.LastCommitUser.AvatarLink}}" /> <img class="ui avatar image img-12" src="{{.LastCommitUser.AvatarLink}}" />
<a href="{{AppSubUrl}}/{{.LastCommitUser.Name}}"><strong>{{.LastCommit.Author.Name}}</strong></a> <a href="{{AppSubUrl}}/{{.LastCommitUser.Name}}"><strong>{{.LastCommit.Author.Name}}</strong></a>
{{else}} {{else}}
<img class="ui avatar image img-12" src="{{AvatarLink .LastCommit.Author.Email}}" /> <img class="ui avatar image img-12" src="{{AvatarLink .LastCommit.Author.Email}}" />
<strong>{{.LastCommit.Author.Name}}</strong> <strong>{{.LastCommit.Author.Name}}</strong>
{{end}} {{end}}
<a rel="nofollow" class="ui sha label" href="{{.RepoLink}}/commit/{{.LastCommit.ID}}" rel="nofollow">{{ShortSha .LastCommit.ID.String}}</a> <a rel="nofollow" class="ui sha label" href="{{.RepoLink}}/commit/{{.LastCommit.ID}}" rel="nofollow">{{ShortSha .LastCommit.ID.String}}</a>
<span class="grey">{{RenderCommitMessage false .LastCommit.Summary .RepoLink $.Repository.ComposeMetas}}</span> <span class="grey">{{RenderCommitMessage false .LastCommit.Summary .RepoLink $.Repository.ComposeMetas}}</span>
</th> </th>
<th class="nine wide"> <th class="nine wide">
</th> </th>
<th class="three wide text grey right age">{{TimeSince .LastCommit.Author.When $.Lang}}</th> <th class="three wide text grey right age">{{TimeSince .LastCommit.Author.When $.Lang}}</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{if .HasParentPath}} {{if .HasParentPath}}
<tr class="has-parent"> <tr class="has-parent">
<td colspan="3"><i class="icon octicon octicon-mail-reply"></i><a href="{{EscapePound .BranchLink}}{{.ParentPath}}">..</a></td> <td colspan="3"><i class="icon octicon octicon-mail-reply"></i><a href="{{EscapePound .BranchLink}}{{.ParentPath}}">..</a></td>
</tr> </tr>
{{end}} {{end}}
{{range $item := .Files}} {{range $item := .Files}}
{{$entry := index $item 0}} {{$entry := index $item 0}}
{{$commit := index $item 1}} {{$commit := index $item 1}}
<tr> <tr>
{{if $entry.IsSubModule}} {{if $entry.IsSubModule}}
<td> <td>
<span class="icon octicon octicon-file-submodule"></span> <span class="icon octicon octicon-file-submodule"></span>
{{if $commit.RefUrl}} {{if $commit.RefUrl}}
<a href="{{$commit.RefUrl}}">{{$entry.Name}}</a> @ <a href="{{$commit.RefUrl}}/commit/{{$commit.RefId}}">{{ShortSha $commit.RefId}}</a> <a href="{{$commit.RefUrl}}">{{$entry.Name}}</a> @ <a href="{{$commit.RefUrl}}/commit/{{$commit.RefId}}">{{ShortSha $commit.RefId}}</a>
{{else}} {{else}}
{{$entry.Name}} @ {{ShortSha $commit.RefId}} {{$entry.Name}} @ {{ShortSha $commit.RefId}}
{{end}} {{end}}
</td> </td>
{{else}} {{else}}
<td class="name"> <td class="name">
<span class="icon octicon octicon-file-{{if or $entry.IsDir}}directory{{else}}text{{end}}"></span> <span class="icon octicon octicon-file-{{if or $entry.IsDir}}directory{{else}}text{{end}}"></span>
<a href="{{EscapePound $.BranchLink}}/{{EscapePound $.TreePath}}{{EscapePound $entry.Name}}">{{$entry.Name}}</a> <a href="{{EscapePound $.BranchLink}}/{{EscapePound $.TreePath}}{{EscapePound $entry.Name}}">{{$entry.Name}}</a>
</td> </td>
{{end}} {{end}}
<td class="message collapsing"> <td class="message collapsing">
<a rel="nofollow" class="ui sha label" href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{$commit.ID}}">{{ShortSha $commit.ID.String}}</a> <a rel="nofollow" class="ui sha label" href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{$commit.ID}}">{{ShortSha $commit.ID.String}}</a>
{{RenderCommitMessage false $commit.Summary $.RepoLink $.Repository.ComposeMetas}} {{RenderCommitMessage false $commit.Summary $.RepoLink $.Repository.ComposeMetas}}
</td> </td>
<td class="text grey right age">{{TimeSince $commit.Committer.When $.Lang}}</td> <td class="text grey right age">{{TimeSince $commit.Committer.When $.Lang}}</td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>
</table> </table>
{{if .ReadmeExist}} {{if .ReadmeExist}}
{{template "repo/view_file" .}} {{template "repo/view_file" .}}
{{end}} {{end}}

View File

@ -1,56 +1,56 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository watchers"> <div class="repository watchers">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
<h2 class="ui dividing header"> <h2 class="ui dividing header">
{{if .PageIsWatchers}} {{if .PageIsWatchers}}
{{.i18n.Tr "repo.watchers"}} {{.i18n.Tr "repo.watchers"}}
{{else}} {{else}}
{{.i18n.Tr "repo.stargazers"}} {{.i18n.Tr "repo.stargazers"}}
{{end}} {{end}}
</h2> </h2>
<ul class="list"> <ul class="list">
{{range .Watchers}} {{range .Watchers}}
<li class="item ui segment"> <li class="item ui segment">
<a href="{{.HomeLink}}"> <a href="{{.HomeLink}}">
<img class="avatar" src="{{.AvatarLink}}"/> <img class="avatar" src="{{.AvatarLink}}"/>
</a> </a>
<h3 class="name"><a href="{{.HomeLink}}">{{.DisplayName}}</a></h3> <h3 class="name"><a href="{{.HomeLink}}">{{.DisplayName}}</a></h3>
<div class="meta"> <div class="meta">
{{if .Website}} {{if .Website}}
<span class="icon octicon octicon-link"></span> <a href="{{.Website}}" target="_blank">{{.Website}}</a> <span class="icon octicon octicon-link"></span> <a href="{{.Website}}" target="_blank">{{.Website}}</a>
{{else if .Location}} {{else if .Location}}
<span class="icon octicon octicon-location"></span> {{.Location}} <span class="icon octicon octicon-location"></span> {{.Location}}
{{else}} {{else}}
<span class="icon octicon octicon-clock"></span> {{$.i18n.Tr "user.join_on"}} {{DateFmtShort .Created}} <span class="icon octicon octicon-clock"></span> {{$.i18n.Tr "user.join_on"}} {{DateFmtShort .Created}}
{{end}} {{end}}
</div> </div>
</li> </li>
{{end}} {{end}}
</ul> </ul>
{{with .Page}} {{with .Page}}
{{if gt .TotalPages 1}} {{if gt .TotalPages 1}}
<div class="center page buttons"> <div class="center page buttons">
<div class="ui borderless pagination menu"> <div class="ui borderless pagination menu">
<a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}> <a class="{{if not .HasPrevious}}disabled{{end}} item" {{if .HasPrevious}}href="{{$.Link}}?page={{.Previous}}"{{end}}>
<i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}} <i class="left arrow icon"></i> {{$.i18n.Tr "repo.issues.previous"}}
</a> </a>
{{range .Pages}} {{range .Pages}}
{{if eq .Num -1}} {{if eq .Num -1}}
<a class="disabled item">...</a> <a class="disabled item">...</a>
{{else}} {{else}}
<a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a> <a class="{{if .IsCurrent}}active{{end}} item" {{if not .IsCurrent}}href="{{$.Link}}?page={{.Num}}"{{end}}>{{.Num}}</a>
{{end}} {{end}}
{{end}} {{end}}
<a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}> <a class="{{if not .HasNext}}disabled{{end}} item" {{if .HasNext}}href="{{$.Link}}?page={{.Next}}"{{end}}>
{{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i> {{$.i18n.Tr "repo.issues.next"}}&nbsp;<i class="icon right arrow"></i>
</a> </a>
</div> </div>
</div> </div>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,34 +1,34 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository wiki new"> <div class="repository wiki new">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
{{template "base/alert" .}} {{template "base/alert" .}}
<div class="ui header"> <div class="ui header">
{{.i18n.Tr "repo.wiki.new_page"}} {{.i18n.Tr "repo.wiki.new_page"}}
{{if .PageIsWikiEdit}} {{if .PageIsWikiEdit}}
<div class="ui right"> <div class="ui right">
<a class="ui green small button" href="{{.RepoLink}}/wiki/_new">{{.i18n.Tr "repo.wiki.new_page_button"}}</a> <a class="ui green small button" href="{{.RepoLink}}/wiki/_new">{{.i18n.Tr "repo.wiki.new_page_button"}}</a>
</div> </div>
{{end}} {{end}}
</div> </div>
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<input type="hidden" name="old_title" value="{{.old_title}}"> <input type="hidden" name="old_title" value="{{.old_title}}">
<div class="field {{if .Err_Title}}error{{end}}"> <div class="field {{if .Err_Title}}error{{end}}">
<input name="title" value="{{.title}}" autofocus required> <input name="title" value="{{.title}}" autofocus required>
</div> </div>
<div class="field"> <div class="field">
<textarea id="edit-area" name="content" data-url="{{AppSubUrl}}/api/v1/markdown" data-context="{{.RepoLink}}">{{if .PageIsWikiEdit}}{{.content}}{{else}}{{.i18n.Tr "repo.wiki.welcome"}}{{end}}</textarea required> <textarea id="edit-area" name="content" data-url="{{AppSubUrl}}/api/v1/markdown" data-context="{{.RepoLink}}">{{if .PageIsWikiEdit}}{{.content}}{{else}}{{.i18n.Tr "repo.wiki.welcome"}}{{end}}</textarea required>
</div> </div>
<div class="field"> <div class="field">
<input name="message" placeholder="{{.i18n.Tr "repo.wiki.default_commit_message"}}"> <input name="message" placeholder="{{.i18n.Tr "repo.wiki.default_commit_message"}}">
</div> </div>
<div class="text right"> <div class="text right">
<button class="ui green button"> <button class="ui green button">
{{.i18n.Tr "repo.wiki.save_page"}} {{.i18n.Tr "repo.wiki.save_page"}}
</button> </button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,27 +1,27 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository wiki pages"> <div class="repository wiki pages">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
<div class="ui header"> <div class="ui header">
{{.i18n.Tr "repo.wiki.pages"}} {{.i18n.Tr "repo.wiki.pages"}}
<div class="ui right"> <div class="ui right">
<a class="ui green small button" href="{{.RepoLink}}/wiki/_new">{{.i18n.Tr "repo.wiki.new_page_button"}}</a> <a class="ui green small button" href="{{.RepoLink}}/wiki/_new">{{.i18n.Tr "repo.wiki.new_page_button"}}</a>
</div> </div>
</div> </div>
<table class="ui table"> <table class="ui table">
<tbody> <tbody>
{{range .Pages}} {{range .Pages}}
<tr> <tr>
<td> <td>
<i class="icon octicon octicon-file-text"></i> <i class="icon octicon octicon-file-text"></i>
<a href="{{$.RepoLink}}/wiki/{{.URL}}">{{.Name}}</a> <a href="{{$.RepoLink}}/wiki/{{.URL}}">{{.Name}}</a>
</td> </td>
{{$timeSince := TimeSince .Updated $.Lang}} {{$timeSince := TimeSince .Updated $.Lang}}
<td class="text right grey">{{$.i18n.Tr "repo.wiki.last_updated" $timeSince | Safe}}</td> <td class="text right grey">{{$.i18n.Tr "repo.wiki.last_updated" $timeSince | Safe}}</td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>
</table> </table>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,15 +1,15 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository wiki start"> <div class="repository wiki start">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
<div class="ui center segment"> <div class="ui center segment">
<span class="mega-octicon octicon-book"></span> <span class="mega-octicon octicon-book"></span>
<h2>{{.i18n.Tr "repo.wiki.welcome"}}</h2> <h2>{{.i18n.Tr "repo.wiki.welcome"}}</h2>
<p>{{.i18n.Tr "repo.wiki.welcome_desc"}}</p> <p>{{.i18n.Tr "repo.wiki.welcome_desc"}}</p>
{{if .IsRepositoryPusher}} {{if .IsRepositoryPusher}}
<a class="ui green button" href="{{.RepoLink}}/wiki/_new">{{.i18n.Tr "repo.wiki.create_first_page"}}</a> <a class="ui green button" href="{{.RepoLink}}/wiki/_new">{{.i18n.Tr "repo.wiki.create_first_page"}}</a>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,72 +1,72 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="repository wiki view"> <div class="repository wiki view">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
<div class="ui grid"> <div class="ui grid">
<div class="ui ten wide column"> <div class="ui ten wide column">
<div class="choose page"> <div class="choose page">
<div class="ui floating filter dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}"> <div class="ui floating filter dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}">
<div class="ui basic small button"> <div class="ui basic small button">
<span class="text"> <span class="text">
{{.i18n.Tr "repo.wiki.page"}}: {{.i18n.Tr "repo.wiki.page"}}:
<strong>{{.title}}</strong> <strong>{{.title}}</strong>
</span> </span>
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
</div> </div>
<div class="menu"> <div class="menu">
<div class="ui icon search input"> <div class="ui icon search input">
<i class="filter icon"></i> <i class="filter icon"></i>
<input name="search" placeholder="{{.i18n.Tr "repo.wiki.filter_page"}}..."> <input name="search" placeholder="{{.i18n.Tr "repo.wiki.filter_page"}}...">
</div> </div>
<div class="scrolling menu" {{if .IsTag}}style="display: none"{{end}}> <div class="scrolling menu" {{if .IsTag}}style="display: none"{{end}}>
{{range .Pages}} {{range .Pages}}
<div class="item {{if eq $.Title .Name}}selected{{end}}" data-url="{{$.RepoLink}}/wiki/{{.URL}}">{{.Name}}</div> <div class="item {{if eq $.Title .Name}}selected{{end}}" data-url="{{$.RepoLink}}/wiki/{{.URL}}">{{.Name}}</div>
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="ui six wide column"> <div class="ui six wide column">
<div class="ui action small input" id="clone-panel"> <div class="ui action small input" id="clone-panel">
{{if not $.DisableSSH}} {{if not $.DisableSSH}}
<button class="ui blue basic clone button" id="repo-clone-ssh" data-link="{{.WikiCloneLink.SSH}}"> <button class="ui blue basic clone button" id="repo-clone-ssh" data-link="{{.WikiCloneLink.SSH}}">
SSH SSH
</button> </button>
{{end}} {{end}}
<button class="ui {{if $.DisableSSH}}blue{{end}} basic clone button" id="repo-clone-https" data-link="{{.WikiCloneLink.HTTPS}}"> <button class="ui {{if $.DisableSSH}}blue{{end}} basic clone button" id="repo-clone-https" data-link="{{.WikiCloneLink.HTTPS}}">
{{if UseHTTPS}}HTTPS{{else}}HTTP{{end}} {{if UseHTTPS}}HTTPS{{else}}HTTP{{end}}
</button> </button>
<input id="repo-clone-url" value="{{if $.DisableSSH}}{{$.WikiCloneLink.HTTPS}}{{else}}{{$.WikiCloneLink.SSH}}{{end}}" readonly> <input id="repo-clone-url" value="{{if $.DisableSSH}}{{$.WikiCloneLink.HTTPS}}{{else}}{{$.WikiCloneLink.SSH}}{{end}}" readonly>
<button class="ui basic icon button poping up clipboard" id="clipboard-btn" data-original="{{.i18n.Tr "repo.copy_link"}}" data-success="{{.i18n.Tr "repo.copy_link_success"}}" data-error="{{.i18n.Tr "repo.copy_link_error"}}" data-content="{{.i18n.Tr "repo.copy_link"}}" data-variation="inverted tiny" data-clipboard-target="#repo-clone-url"> <button class="ui basic icon button poping up clipboard" id="clipboard-btn" data-original="{{.i18n.Tr "repo.copy_link"}}" data-success="{{.i18n.Tr "repo.copy_link_success"}}" data-error="{{.i18n.Tr "repo.copy_link_error"}}" data-content="{{.i18n.Tr "repo.copy_link"}}" data-variation="inverted tiny" data-clipboard-target="#repo-clone-url">
<i class="octicon octicon-clippy"></i> <i class="octicon octicon-clippy"></i>
</button> </button>
<div class="ui basic jump dropdown icon button"> <div class="ui basic jump dropdown icon button">
<i class="download icon"></i> <i class="download icon"></i>
<div class="menu"> <div class="menu">
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.zip"><i class="icon octicon octicon-file-zip"></i> ZIP</a> <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.zip"><i class="icon octicon octicon-file-zip"></i> ZIP</a>
<a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.tar.gz"><i class="icon octicon octicon-file-zip"></i> TAR.GZ</a> <a class="item" href="{{$.RepoLink}}/archive/{{EscapePound $.BranchName}}.tar.gz"><i class="icon octicon octicon-file-zip"></i> TAR.GZ</a>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="ui dividing header"> <div class="ui dividing header">
{{.title}} {{.title}}
{{if .IsRepositoryPusher}} {{if .IsRepositoryPusher}}
<div class="ui right"> <div class="ui right">
<a class="ui small button" href="{{.RepoLink}}/wiki/{{.PageURL}}/_edit">{{.i18n.Tr "repo.wiki.edit_page_button"}}</a> <a class="ui small button" href="{{.RepoLink}}/wiki/{{.PageURL}}/_edit">{{.i18n.Tr "repo.wiki.edit_page_button"}}</a>
<a class="ui green small button" href="{{.RepoLink}}/wiki/_new">{{.i18n.Tr "repo.wiki.new_page_button"}}</a> <a class="ui green small button" href="{{.RepoLink}}/wiki/_new">{{.i18n.Tr "repo.wiki.new_page_button"}}</a>
</div> </div>
{{end}} {{end}}
<div class="ui sub header"> <div class="ui sub header">
{{$timeSince := TimeSince .Author.When $.Lang}} {{$timeSince := TimeSince .Author.When $.Lang}}
{{.i18n.Tr "repo.wiki.last_commit_info" .Author.Name $timeSince | Safe}} {{.i18n.Tr "repo.wiki.last_commit_info" .Author.Name $timeSince | Safe}}
</div> </div>
</div> </div>
<div class="ui segment markdown"> <div class="ui segment markdown">
{{.content | Str2html}} {{.content | Str2html}}
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,9 +1,9 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="ui container center"> <div class="ui container center">
<p style="margin-top: 100px"><img src="{{AppSubUrl}}/img/404.png" alt="404"/></p> <p style="margin-top: 100px"><img src="{{AppSubUrl}}/img/404.png" alt="404"/></p>
<div class="ui divider"></div> <div class="ui divider"></div>
<br> <br>
{{if .ShowFooterVersion}}<p>Application Version: {{AppVer}}</p>{{end}} {{if .ShowFooterVersion}}<p>Application Version: {{AppVer}}</p>{{end}}
<p>If you think this is an error, please open an issue on <a href="https://github.com/gogits/gogs/issues/new">GitHub</a>.</p> <p>If you think this is an error, please open an issue on <a href="https://github.com/gogits/gogs/issues/new">GitHub</a>.</p>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,9 +1,9 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="ui container center"> <div class="ui container center">
<p style="margin-top: 100px"><img src="{{AppSubUrl}}/img/500.png" alt="500"/></p> <p style="margin-top: 100px"><img src="{{AppSubUrl}}/img/500.png" alt="500"/></p>
<div class="ui divider"></div> <div class="ui divider"></div>
<br> <br>
{{if .ErrorMsg}}<p>An error has occurred : {{.ErrorMsg}}</p>{{end}} {{if .ErrorMsg}}<p>An error has occurred : {{.ErrorMsg}}</p>{{end}}
{{if .ShowFooterVersion}}<p>Application Version: {{AppVer}}</p>{{end}} {{if .ShowFooterVersion}}<p>Application Version: {{AppVer}}</p>{{end}}
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,38 +1,38 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="user activate"> <div class="user activate">
<div class="ui middle very relaxed page grid"> <div class="ui middle very relaxed page grid">
<div class="column"> <div class="column">
<form class="ui form" action="{{AppSubUrl}}/user/activate" method="post"> <form class="ui form" action="{{AppSubUrl}}/user/activate" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<h2 class="ui top attached header"> <h2 class="ui top attached header">
{{.i18n.Tr "auth.active_your_account"}} {{.i18n.Tr "auth.active_your_account"}}
</h2> </h2>
<div class="ui attached segment"> <div class="ui attached segment">
{{template "base/alert" .}} {{template "base/alert" .}}
{{if .IsActivatePage}} {{if .IsActivatePage}}
{{if .ServiceNotEnabled}} {{if .ServiceNotEnabled}}
<p class="center">{{.i18n.Tr "auth.disable_register_mail"}}</p> <p class="center">{{.i18n.Tr "auth.disable_register_mail"}}</p>
{{else if .ResendLimited}} {{else if .ResendLimited}}
<p class="center">{{.i18n.Tr "auth.resent_limit_prompt"}}</p> <p class="center">{{.i18n.Tr "auth.resent_limit_prompt"}}</p>
{{else}} {{else}}
<p>{{.i18n.Tr "auth.confirmation_mail_sent_prompt" .SignedUser.Email .Hours | Str2html}}</p> <p>{{.i18n.Tr "auth.confirmation_mail_sent_prompt" .SignedUser.Email .Hours | Str2html}}</p>
{{end}} {{end}}
{{else}} {{else}}
{{if .IsSendRegisterMail}} {{if .IsSendRegisterMail}}
<p>{{.i18n.Tr "auth.confirmation_mail_sent_prompt" .Email .Hours | Str2html}}</p> <p>{{.i18n.Tr "auth.confirmation_mail_sent_prompt" .Email .Hours | Str2html}}</p>
{{else if .IsActivateFailed}} {{else if .IsActivateFailed}}
<p>{{.i18n.Tr "auth.invalid_code"}}</p> <p>{{.i18n.Tr "auth.invalid_code"}}</p>
{{else}} {{else}}
<p>{{.i18n.Tr "auth.has_unconfirmed_mail" .SignedUser.Name .SignedUser.Email | Str2html}}</p> <p>{{.i18n.Tr "auth.has_unconfirmed_mail" .SignedUser.Name .SignedUser.Email | Str2html}}</p>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="text right"> <div class="text right">
<button class="ui blue button">{{.i18n.Tr "auth.resend_mail"}}</button> <button class="ui blue button">{{.i18n.Tr "auth.resend_mail"}}</button>
</div> </div>
{{end}} {{end}}
{{end}} {{end}}
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,34 +1,34 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="user forgot password"> <div class="user forgot password">
<div class="ui middle very relaxed page grid"> <div class="ui middle very relaxed page grid">
<div class="column"> <div class="column">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<h2 class="ui top attached header"> <h2 class="ui top attached header">
{{.i18n.Tr "auth.forgot_password"}} {{.i18n.Tr "auth.forgot_password"}}
</h2> </h2>
<div class="ui attached segment"> <div class="ui attached segment">
{{template "base/alert" .}} {{template "base/alert" .}}
{{if .IsResetSent}} {{if .IsResetSent}}
<p>{{.i18n.Tr "auth.confirmation_mail_sent_prompt" .Email .Hours | Str2html}}</p> <p>{{.i18n.Tr "auth.confirmation_mail_sent_prompt" .Email .Hours | Str2html}}</p>
{{else if .IsResetRequest}} {{else if .IsResetRequest}}
<div class="required inline field {{if .Err_Email}}error{{end}}"> <div class="required inline field {{if .Err_Email}}error{{end}}">
<label for="email">{{.i18n.Tr "email"}}</label> <label for="email">{{.i18n.Tr "email"}}</label>
<input id="email" name="email" type="email" value="{{.Email}}" autofocus required> <input id="email" name="email" type="email" value="{{.Email}}" autofocus required>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="inline field"> <div class="inline field">
<label></label> <label></label>
<button class="ui blue button">{{.i18n.Tr "auth.send_reset_mail"}}</button> <button class="ui blue button">{{.i18n.Tr "auth.send_reset_mail"}}</button>
</div> </div>
{{else if .IsResetDisable}} {{else if .IsResetDisable}}
<p class="center">{{.i18n.Tr "auth.disable_register_mail"}}</p> <p class="center">{{.i18n.Tr "auth.disable_register_mail"}}</p>
{{else if .ResendLimited}} {{else if .ResendLimited}}
<p class="center">{{.i18n.Tr "auth.resent_limit_prompt"}}</p> <p class="center">{{.i18n.Tr "auth.resent_limit_prompt"}}</p>
{{end}} {{end}}
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

View File

@ -1,31 +1,31 @@
{{template "base/head" .}} {{template "base/head" .}}
<div class="user reset password"> <div class="user reset password">
<div class="ui middle very relaxed page grid"> <div class="ui middle very relaxed page grid">
<div class="column"> <div class="column">
<form class="ui form" action="{{.Link}}" method="post"> <form class="ui form" action="{{.Link}}" method="post">
{{.CsrfTokenHtml}} {{.CsrfTokenHtml}}
<input name="code" type="hidden" value="{{.Code}}"> <input name="code" type="hidden" value="{{.Code}}">
<h2 class="ui top attached header"> <h2 class="ui top attached header">
{{.i18n.Tr "auth.reset_password"}} {{.i18n.Tr "auth.reset_password"}}
</h2> </h2>
<div class="ui attached segment"> <div class="ui attached segment">
{{template "base/alert" .}} {{template "base/alert" .}}
{{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}}" autofocus required> <input id="password" name="password" type="password" value="{{.password}}" autofocus required>
</div> </div>
<div class="ui divider"></div> <div class="ui divider"></div>
<div class="inline field"> <div class="inline field">
<label></label> <label></label>
<button class="ui blue button">{{.i18n.Tr "auth.reset_password_helper"}}</button> <button class="ui blue button">{{.i18n.Tr "auth.reset_password_helper"}}</button>
</div> </div>
{{else}} {{else}}
<p class="center">{{.i18n.Tr "auth.invalid_code"}}</p> <p class="center">{{.i18n.Tr "auth.invalid_code"}}</p>
{{end}} {{end}}
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
{{template "base/footer" .}} {{template "base/footer" .}}

Some files were not shown because too many files have changed in this diff Show More