mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 00:03:59 -04:00 
			
		
		
		
	#1525 Triggere mailer for admin created accounts
This commit is contained in:
		
							parent
							
								
									986447335d
								
							
						
					
					
						commit
						21e13cb51e
					
				| @ -788,6 +788,7 @@ users.activated = Activated | ||||
| users.admin = Admin | ||||
| users.repos = Repos | ||||
| users.created = Created | ||||
| users.send_register_notify = Send Registration Notification To User | ||||
| users.new_success = New account '%s' has been created successfully. | ||||
| users.edit = Edit | ||||
| users.auth_source = Authentication Source | ||||
|  | ||||
| @ -11,11 +11,12 @@ import ( | ||||
| ) | ||||
| 
 | ||||
| type AdminCrateUserForm struct { | ||||
| 	LoginType string `binding:"Required"` | ||||
| 	LoginName string | ||||
| 	UserName  string `binding:"Required;AlphaDashDot;MaxSize(35)"` | ||||
| 	Email     string `binding:"Required;Email;MaxSize(254)"` | ||||
| 	Password  string `binding:"MaxSize(255)"` | ||||
| 	LoginType  string `binding:"Required"` | ||||
| 	LoginName  string | ||||
| 	UserName   string `binding:"Required;AlphaDashDot;MaxSize(35)"` | ||||
| 	Email      string `binding:"Required;Email;MaxSize(254)"` | ||||
| 	Password   string `binding:"MaxSize(255)"` | ||||
| 	SendNotify bool | ||||
| } | ||||
| 
 | ||||
| func (f *AdminCrateUserForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors { | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -17,10 +17,10 @@ import ( | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	AUTH_ACTIVATE         base.TplName = "mail/auth/activate" | ||||
| 	AUTH_ACTIVATE_EMAIL   base.TplName = "mail/auth/activate_email" | ||||
| 	AUTH_RESET_PASSWORD   base.TplName = "mail/auth/reset_passwd" | ||||
| 	AUTH_REGISTER_SUCCESS base.TplName = "mail/auth/register_success" | ||||
| 	AUTH_ACTIVATE        base.TplName = "mail/auth/activate" | ||||
| 	AUTH_ACTIVATE_EMAIL  base.TplName = "mail/auth/activate_email" | ||||
| 	AUTH_REGISTER_NOTIFY base.TplName = "mail/auth/register_notify" | ||||
| 	AUTH_RESET_PASSWORD  base.TplName = "mail/auth/reset_passwd" | ||||
| 
 | ||||
| 	NOTIFY_COLLABORATOR base.TplName = "mail/notify/collaborator" | ||||
| 	NOTIFY_MENTION      base.TplName = "mail/notify/mention" | ||||
| @ -64,6 +64,20 @@ func SendResetPasswordMail(c *macaron.Context, u *models.User) { | ||||
| 	SendUserMail(c, u, AUTH_RESET_PASSWORD, u.GenerateActivateCode(), c.Tr("mail.reset_password"), "reset password") | ||||
| } | ||||
| 
 | ||||
| // SendRegisterNotifyMail triggers a notify e-mail by admin created a account. | ||||
| func SendRegisterNotifyMail(c *macaron.Context, u *models.User) { | ||||
| 	body, err := c.HTMLString(string(AUTH_REGISTER_NOTIFY), ComposeTplData(u)) | ||||
| 	if err != nil { | ||||
| 		log.Error(4, "HTMLString: %v", err) | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	msg := NewMessage([]string{u.Email}, c.Tr("mail.register_notify"), body) | ||||
| 	msg.Info = fmt.Sprintf("UID: %d, registration notify", u.Id) | ||||
| 
 | ||||
| 	SendAsync(msg) | ||||
| } | ||||
| 
 | ||||
| // SendActivateAccountMail sends confirmation e-mail. | ||||
| func SendActivateEmailMail(c *macaron.Context, u *models.User, email *models.EmailAddress) { | ||||
| 	data := ComposeTplData(u) | ||||
|  | ||||
| @ -14,6 +14,7 @@ import ( | ||||
| 	"github.com/gogits/gogs/modules/auth" | ||||
| 	"github.com/gogits/gogs/modules/base" | ||||
| 	"github.com/gogits/gogs/modules/log" | ||||
| 	"github.com/gogits/gogs/modules/mailer" | ||||
| 	"github.com/gogits/gogs/modules/middleware" | ||||
| 	"github.com/gogits/gogs/modules/setting" | ||||
| ) | ||||
| @ -60,6 +61,8 @@ func NewUser(ctx *middleware.Context) { | ||||
| 		return | ||||
| 	} | ||||
| 	ctx.Data["Sources"] = sources | ||||
| 
 | ||||
| 	ctx.Data["CanSendEmail"] = setting.MailService != nil | ||||
| 	ctx.HTML(200, USER_NEW) | ||||
| } | ||||
| 
 | ||||
| @ -75,6 +78,8 @@ func NewUserPost(ctx *middleware.Context, form auth.AdminCrateUserForm) { | ||||
| 	} | ||||
| 	ctx.Data["Sources"] = sources | ||||
| 
 | ||||
| 	ctx.Data["CanSendEmail"] = setting.MailService != nil | ||||
| 
 | ||||
| 	if ctx.HasError() { | ||||
| 		ctx.HTML(200, USER_NEW) | ||||
| 		return | ||||
| @ -118,6 +123,11 @@ func NewUserPost(ctx *middleware.Context, form auth.AdminCrateUserForm) { | ||||
| 	} | ||||
| 	log.Trace("Account created by admin(%s): %s", ctx.User.Name, u.Name) | ||||
| 
 | ||||
| 	// Send e-mail notification. | ||||
| 	if form.SendNotify && setting.MailService != nil { | ||||
| 		mailer.SendRegisterNotifyMail(ctx.Context, u) | ||||
| 	} | ||||
| 
 | ||||
| 	ctx.Flash.Success(ctx.Tr("admin.users.new_success", u.Name)) | ||||
| 	ctx.Redirect(setting.AppSubUrl + "/admin/users/" + com.ToStr(u.Id)) | ||||
| } | ||||
|  | ||||
| @ -20,43 +20,42 @@ | ||||
|               </tr> | ||||
|             </thead> | ||||
|             <tbody> | ||||
|                {{range .Notices}} | ||||
|                <tr> | ||||
| 		<td>{{.Id}}</td> | ||||
| 		<td>{{$.i18n.Tr .TrStr}}</td> | ||||
| 		<td><span>{{.Description}}</span></td> | ||||
| 		<td>{{.Created}}</td> | ||||
| 		<td><a href="{{AppSubUrl}}/admin/notices/{{.Id}}/delete"><i class="fa fa-trash-o text-red"></i></a></td> | ||||
|                </tr> | ||||
|                {{end}} | ||||
|               {{range .Notices}} | ||||
|               <tr> | ||||
|                 <td>{{.Id}}</td> | ||||
|                 <td>{{$.i18n.Tr .TrStr}}</td> | ||||
|                 <td><span>{{.Description}}</span></td> | ||||
|                 <td>{{.Created}}</td> | ||||
|                 <td><a href="{{AppSubUrl}}/admin/notices/{{.Id}}/delete"><i class="fa fa-trash-o text-red"></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"}} <i class="icon right arrow"></i> | ||||
|                 </a> | ||||
| 		<a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}} <i class="angle double right icon"></i></a> | ||||
| 	      </div> | ||||
| 	    </div> | ||||
|           {{end}} | ||||
| 	{{end}} | ||||
| 
 | ||||
| 	      {{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"}} <i class="icon right arrow"></i> | ||||
|             </a> | ||||
|             <a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}} <i class="angle double right icon"></i></a> | ||||
|           </div> | ||||
|         </div> | ||||
|         {{end}} | ||||
|         {{end}} | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
|  | ||||
| @ -2,65 +2,62 @@ | ||||
| <div class="admin user"> | ||||
|   <div class="ui container"> | ||||
|     <div class="ui grid"> | ||||
|       {{template "admin/navbar" .}} | ||||
|       <div class="twelve wide column content"> | ||||
|         {{template "base/alert" .}} | ||||
|         <h4 class="ui top attached header"> | ||||
|           {{.i18n.Tr "admin.orgs.org_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) | ||||
|         </h4> | ||||
|         <div class="ui attached table segment"> | ||||
|           <table class="ui very basic striped table"> | ||||
| 			<thead> | ||||
| 			  <tr> | ||||
| 			    <th>ID</th> | ||||
| 			    <th>{{.i18n.Tr "admin.orgs.name"}}</th> | ||||
| 			    <th>{{.i18n.Tr "email"}}</th> | ||||
| 			    <th>{{.i18n.Tr "admin.orgs.teams"}}</th> | ||||
| 			    <th>{{.i18n.Tr "admin.orgs.members"}}</th> | ||||
| 			    <th>{{.i18n.Tr "admin.users.repos"}}</th> | ||||
| 				<th>{{.i18n.Tr "admin.users.created"}}</th> | ||||
| 			  </tr> | ||||
| 			</thead> | ||||
| 			<tbody> | ||||
| 			  {{range .Orgs}} | ||||
| 			  <tr> | ||||
| 			    <td>{{.Id}}</td> | ||||
| 			    <td><a href="{{AppSubUrl}}/org/{{.Name}}">{{.Name}}</a></td> | ||||
| 			    <td>{{.Email}}</td> | ||||
| 			    <td>{{.NumTeams}}</td> | ||||
| 			    <td>{{.NumMembers}}</td> | ||||
| 			    <td>{{.NumRepos}}</td> | ||||
| 			    <td><span title="{{DateFmtLong .Created}}">{{DateFmtShort .Created}}</span></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"}} <i class="icon right arrow"></i> | ||||
|                 </a> | ||||
| 		<a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}} <i class="angle double right icon"></i></a> | ||||
| 	      </div> | ||||
| 	    </div> | ||||
|           {{end}} | ||||
| 	{{end}} | ||||
| 	    {{template "admin/navbar" .}} | ||||
| 	    <div class="twelve wide column content"> | ||||
| 	      {{template "base/alert" .}} | ||||
| 	      <h4 class="ui top attached header"> | ||||
| 	        {{.i18n.Tr "admin.orgs.org_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) | ||||
| 	      </h4> | ||||
| 	      <div class="ui attached table segment"> | ||||
| 	        <table class="ui very basic striped table"> | ||||
| 						<thead> | ||||
| 						  <tr> | ||||
| 						    <th>ID</th> | ||||
| 						    <th>{{.i18n.Tr "admin.orgs.name"}}</th> | ||||
| 						    <th>{{.i18n.Tr "admin.orgs.teams"}}</th> | ||||
| 						    <th>{{.i18n.Tr "admin.orgs.members"}}</th> | ||||
| 						    <th>{{.i18n.Tr "admin.users.repos"}}</th> | ||||
| 								<th>{{.i18n.Tr "admin.users.created"}}</th> | ||||
| 						  </tr> | ||||
| 						</thead> | ||||
| 						<tbody> | ||||
| 						  {{range .Orgs}} | ||||
| 						  <tr> | ||||
| 						    <td>{{.Id}}</td> | ||||
| 						    <td><a href="{{AppSubUrl}}/org/{{.Name}}">{{.Name}}</a></td> | ||||
| 						    <td>{{.NumTeams}}</td> | ||||
| 						    <td>{{.NumMembers}}</td> | ||||
| 						    <td>{{.NumRepos}}</td> | ||||
| 						    <td><span title="{{DateFmtLong .Created}}">{{DateFmtShort .Created}}</span></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"}} <i class="icon right arrow"></i> | ||||
| 	          </a> | ||||
| 						<a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}} <i class="angle double right icon"></i></a> | ||||
| 		      </div> | ||||
| 		    </div> | ||||
| 		    {{end}} | ||||
| 				{{end}} | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
|  | ||||
| @ -1,70 +1,69 @@ | ||||
| {{template "base/head" .}} | ||||
| <div class="admin user"> | ||||
|   <div class="ui container"> | ||||
|     <div class="ui grid"> | ||||
|       {{template "admin/navbar" .}} | ||||
|       <div class="twelve wide column content"> | ||||
|         {{template "base/alert" .}} | ||||
|         <h4 class="ui top attached header"> | ||||
|           {{.i18n.Tr "admin.repos.repo_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) | ||||
|         </h4> | ||||
|         <div class="ui attached table segment"> | ||||
|           <table class="ui very basic striped table"> | ||||
| 			<thead> | ||||
| 			  <tr> | ||||
| 			    <th>ID</th> | ||||
| 				<th>{{.i18n.Tr "admin.repos.owner"}}</th> | ||||
| 				<th>{{.i18n.Tr "admin.repos.name"}}</th> | ||||
| 				<th>{{.i18n.Tr "admin.repos.private"}}</th> | ||||
| 				<th>{{.i18n.Tr "admin.repos.watches"}}</th> | ||||
| 				<th>{{.i18n.Tr "admin.repos.stars"}}</th> | ||||
| 				<th>{{.i18n.Tr "admin.repos.issues"}}</th> | ||||
| 				<th>{{.i18n.Tr "admin.users.created"}}</th> | ||||
| 			  </tr> | ||||
| 			</thead> | ||||
| 			<tbody> | ||||
| 			  {{range .Repos}} | ||||
| 				<tr> | ||||
| 				  <td>{{.ID}}</td> | ||||
| 				  <td><a href="{{AppSubUrl}}/{{.Owner.Name}}">{{.Owner.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>{{.NumWatches}}</td> | ||||
| 				  <td>{{.NumStars}}</td> | ||||
| 			      <td>{{.NumIssues}}</td> | ||||
| 				  <td><span title="{{DateFmtLong .Created}}">{{DateFmtShort .Created}}</span></td> | ||||
| 				</tr> | ||||
| 			  {{end}} | ||||
| 			</tbody> | ||||
| 		  </table> | ||||
| 	<div class="ui container"> | ||||
| 		<div class="ui grid"> | ||||
| 			{{template "admin/navbar" .}} | ||||
| 			<div class="twelve wide column content"> | ||||
| 				{{template "base/alert" .}} | ||||
| 				<h4 class="ui top attached header"> | ||||
| 				{{.i18n.Tr "admin.repos.repo_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) | ||||
| 				</h4> | ||||
| 				<div class="ui attached table segment"> | ||||
| 					<table class="ui very basic striped table"> | ||||
| 						<thead> | ||||
| 							<tr> | ||||
| 								<th>ID</th> | ||||
| 								<th>{{.i18n.Tr "admin.repos.owner"}}</th> | ||||
| 								<th>{{.i18n.Tr "admin.repos.name"}}</th> | ||||
| 								<th>{{.i18n.Tr "admin.repos.private"}}</th> | ||||
| 								<th>{{.i18n.Tr "admin.repos.watches"}}</th> | ||||
| 								<th>{{.i18n.Tr "admin.repos.stars"}}</th> | ||||
| 								<th>{{.i18n.Tr "admin.repos.issues"}}</th> | ||||
| 								<th>{{.i18n.Tr "admin.users.created"}}</th> | ||||
| 							</tr> | ||||
| 						</thead> | ||||
| 						<tbody> | ||||
| 							{{range .Repos}} | ||||
| 							<tr> | ||||
| 								<td>{{.ID}}</td> | ||||
| 								<td><a href="{{AppSubUrl}}/{{.Owner.Name}}">{{.Owner.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>{{.NumWatches}}</td> | ||||
| 								<td>{{.NumStars}}</td> | ||||
| 								<td>{{.NumIssues}}</td> | ||||
| 								<td><span title="{{DateFmtLong .Created}}">{{DateFmtShort .Created}}</span></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"}} <i class="icon right arrow"></i> | ||||
| 						</a> | ||||
| 						<a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}} <i class="angle double right icon"></i></a> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 				{{end}} | ||||
| 				{{end}} | ||||
| 			</div> | ||||
| 		</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"}} <i class="icon right arrow"></i> | ||||
|                 </a> | ||||
| 		<a class="{{if .IsLast}}disabled{{end}} item" href="{{$.Link}}?page={{.TotalPages}}">{{$.i18n.Tr "admin.last_page"}} <i class="angle double right icon"></i></a> | ||||
| 	      </div> | ||||
| 	    </div> | ||||
|           {{end}} | ||||
| 	{{end}} | ||||
| 
 | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| {{template "base/footer" .}} | ||||
| @ -44,6 +44,16 @@ | ||||
|               <input id="password" name="password" type="password" value="{{.password}}" {{if eq .login_type "0-0"}}required{{end}}> | ||||
|             </div> | ||||
| 
 | ||||
|             <!-- Send register notify e-mail --> | ||||
|             {{if .CanSendEmail}} | ||||
|             <div class="inline field"> | ||||
|               <div class="ui checkbox"> | ||||
|                 <label><strong>{{.i18n.Tr "admin.users.send_register_notify"}}</strong></label> | ||||
|                 <input name="send_notify" type="checkbox" {{if .send_notify}}checked{{end}}> | ||||
|               </div> | ||||
|             </div> | ||||
|             {{end}} | ||||
| 
 | ||||
|             <div class="field"> | ||||
|               <button class="ui green button">{{.i18n.Tr "admin.users.new_account"}}</button> | ||||
|             </div> | ||||
|  | ||||
							
								
								
									
										13
									
								
								templates/mail/auth/register_notify.tmpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								templates/mail/auth/register_notify.tmpl
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| <!DOCTYPE html> | ||||
| <html>   | ||||
| <head> | ||||
|   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
|   <title>{{.User.Name}}, welcome to {{.AppName}}</title> | ||||
| </head> | ||||
| 
 | ||||
| <body> | ||||
|   <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>© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p> | ||||
| </body> | ||||
| </html> | ||||
| @ -1,22 +0,0 @@ | ||||
| <!DOCTYPE html> | ||||
| <html>   | ||||
| <head> | ||||
|   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
|   <title>{{.User.Name}}, welcome to {{.AppName}}</title> | ||||
| </head> | ||||
| 
 | ||||
| <body class="mail register success"> | ||||
|   <div class="ui segment"> | ||||
|     <div class="ui header"> | ||||
|       <img class="ui image" src="{{.AppUrl}}/img/favicon.png"> | ||||
|       {{.AppName}} | ||||
|     </div> | ||||
|     <div class="ui divider"></div> | ||||
|     <p>Hi <b>{{.User.Name}}</b>, this is your registration email for {{.AppName}}!</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>Not working? Try copying and pasting it to your browser.</p> | ||||
|   </div> | ||||
|   <p class="copyright text grey">© 2015 <a target="_blank" href="http://gogs.io">Gogs: Go Git Service</a></p> | ||||
| </body> | ||||
| </html> | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user