@@ -12,7 +12,6 @@ import ( | |||
"net/http" | |||
"net/http/fcgi" | |||
"os" | |||
"os/signal" | |||
"path" | |||
"strings" | |||
@@ -531,16 +530,6 @@ func runWeb(ctx *cli.Context) { | |||
// Not found handler. | |||
m.NotFound(routers.NotFound) | |||
// Detect kill signal. | |||
c := make(chan os.Signal, 1) | |||
signal.Notify(c, os.Interrupt) | |||
go func() { | |||
for _ = range c { | |||
fmt.Println("Kill signal detected, exiting now...") | |||
os.Exit(0) | |||
} | |||
}() | |||
// Flag for port number in case first time run conflict. | |||
if ctx.IsSet("port") { | |||
setting.AppUrl = strings.Replace(setting.AppUrl, setting.HttpPort, ctx.String("port"), 1) | |||
@@ -235,6 +235,26 @@ | |||
"outputPathIsSetByUser": 0, | |||
"processed": 1 | |||
}, | |||
"\/public\/less\/_admin.less": { | |||
"allowInsecureImports": 0, | |||
"createSourceMap": 0, | |||
"disableJavascript": 0, | |||
"fileType": 1, | |||
"ieCompatibility": 1, | |||
"ignore": 1, | |||
"ignoreWasSetByUser": 0, | |||
"inputAbbreviatedPath": "\/public\/less\/_admin.less", | |||
"outputAbbreviatedPath": "\/public\/css\/_admin.css", | |||
"outputPathIsOutsideProject": 0, | |||
"outputPathIsSetByUser": 0, | |||
"outputStyle": 0, | |||
"relativeURLS": 0, | |||
"shouldRunAutoprefixer": 0, | |||
"shouldRunBless": 0, | |||
"strictImports": 0, | |||
"strictMath": 0, | |||
"strictUnits": 0 | |||
}, | |||
"\/public\/less\/_base.less": { | |||
"allowInsecureImports": 0, | |||
"createSourceMap": 0, | |||
@@ -58,4 +58,8 @@ If you see the following error: | |||
checkVersion()] [E] Binary and template file version does not match | |||
``` | |||
Run `rm -fr /var/gogs/gogs/templates/` should fix this it. Just remember to backup templates file if you have made modifications youself. | |||
Run `rm -fr /var/gogs/gogs/templates/` should fix this it. Just remember to backup templates file if you have made modifications youself. | |||
## Known Issues | |||
- [Use ctrl+c when clone through SSH makes Docker exit unexpectedly](https://github.com/gogits/gogs/issues/1499) |
@@ -0,0 +1,18 @@ | |||
.admin { | |||
padding-top: 15px; | |||
padding-bottom: @footer-margin * 3; | |||
.table.segment { | |||
padding: 0; | |||
font-size: 13px; | |||
th { | |||
padding-top: 5px; | |||
padding-bottom: 5px; | |||
} | |||
th, td { | |||
&:first-child { | |||
padding-left: 15px; | |||
} | |||
} | |||
} | |||
} |
@@ -4,4 +4,5 @@ | |||
@import "_home"; | |||
@import "_install"; | |||
@import "_form"; | |||
@import "_repository"; | |||
@import "_repository"; | |||
@import "_admin"; |
@@ -1,74 +1,65 @@ | |||
{{template "ng/base/head" .}} | |||
{{template "ng/base/header" .}} | |||
<div id="admin-wrapper"> | |||
<div id="setting-wrapper" class="main-wrapper"> | |||
<div id="admin-setting" class="container clear"> | |||
{{template "admin/nav" .}} | |||
<div class="grid-4-5 left"> | |||
<div class="setting-content"> | |||
{{template "ng/base/alert" .}} | |||
<div id="setting-content"> | |||
<div class="panel panel-radius"> | |||
<div class="panel-header"> | |||
<strong>{{.i18n.Tr "admin.monitor.cron"}}</strong> | |||
</div> | |||
<div class="panel-body admin-panel"> | |||
<table class="table table-striped"> | |||
<thead> | |||
<tr> | |||
<th>{{.i18n.Tr "admin.monitor.name"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.schedule"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.next"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.previous"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.execute_times"}}</th> | |||
</tr> | |||
</thead> | |||
<tbody> | |||
{{range .Entries}} | |||
<tr> | |||
<td>{{.Description}}</td> | |||
<td>{{.Spec}}</td> | |||
<td>{{.Next}}</td> | |||
<td>{{.Prev}}</td> | |||
<td>{{.ExecTimes}}</td> | |||
</tr> | |||
{{end}} | |||
</tbody> | |||
</table> | |||
</div> | |||
</div> | |||
<br> | |||
<div class="panel panel-radius"> | |||
<div class="panel-header"> | |||
<strong>{{.i18n.Tr "admin.monitor.process"}}</strong> | |||
</div> | |||
<div class="panel-body admin-panel"> | |||
<table class="table table-striped"> | |||
<thead> | |||
<tr> | |||
<th>Pid</th> | |||
<th>{{.i18n.Tr "admin.monitor.desc"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.start"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.execute_time"}}</th> | |||
</tr> | |||
</thead> | |||
<tbody> | |||
{{range .Processes}} | |||
<tr> | |||
<td>{{.Pid}}</td> | |||
<td>{{.Description}}</td> | |||
<td>{{.Start}}</td> | |||
<td>{{TimeSince .Start $.Lang}}</td> | |||
</tr> | |||
{{end}} | |||
</tbody> | |||
</table> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
{{template "base/head" .}} | |||
<div class="admin monitor"> | |||
<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.monitor.cron"}} | |||
</h4> | |||
<div class="ui attached table segment"> | |||
<table class="ui very basic striped table"> | |||
<thead> | |||
<tr> | |||
<th>{{.i18n.Tr "admin.monitor.name"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.schedule"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.next"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.previous"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.execute_times"}}</th> | |||
</tr> | |||
</thead> | |||
<tbody> | |||
{{range .Entries}} | |||
<tr> | |||
<td>{{.Description}}</td> | |||
<td>{{.Spec}}</td> | |||
<td>{{DateFmtLong .Next}}</td> | |||
<td>{{if gt .Prev.Year 1 }}{{DateFmtLong .Prev}}{{else}}N/A{{end}}</td> | |||
<td>{{.ExecTimes}}</td> | |||
</tr> | |||
{{end}} | |||
</tbody> | |||
</table> | |||
</div> | |||
<h4 class="ui top attached header"> | |||
{{.i18n.Tr "admin.monitor.process"}} | |||
</h4> | |||
<div class="ui attached table segment"> | |||
<table class="ui very basic striped table"> | |||
<thead> | |||
<tr> | |||
<th>Pid</th> | |||
<th>{{.i18n.Tr "admin.monitor.desc"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.start"}}</th> | |||
<th>{{.i18n.Tr "admin.monitor.execute_time"}}</th> | |||
</tr> | |||
</thead> | |||
<tbody> | |||
{{range .Processes}} | |||
<tr> | |||
<td>{{.Pid}}</td> | |||
<td>{{.Description}}</td> | |||
<td>{{DateFmtLong .Start}}</td> | |||
<td>{{TimeSince .Start $.Lang}}</td> | |||
</tr> | |||
{{end}} | |||
</tbody> | |||
</table> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
{{template "ng/base/footer" .}} | |||
{{template "base/footer" .}} |
@@ -0,0 +1,29 @@ | |||
<div class="four wide column"> | |||
<div class="ui vertical menu"> | |||
<div class="header item">{{.i18n.Tr "admin_panel"}}</div> | |||
<a class="{{if .PageIsAdminDashboard}}active{{end}} item" href="{{AppSubUrl}}/admin"> | |||
{{.i18n.Tr "admin.dashboard"}} | |||
</a> | |||
<a class="{{if .PageIsAdminUsers}}active{{end}} item" href="{{AppSubUrl}}/admin/users"> | |||
{{.i18n.Tr "admin.users"}} | |||
</a> | |||
<a class="{{if .PageIsAdminOrganizations}}active{{end}} item" href="{{AppSubUrl}}/admin/orgs"> | |||
{{.i18n.Tr "admin.organizations"}} | |||
</a> | |||
<a class="{{if .PageIsAdminRepositories}}active{{end}} item" href="{{AppSubUrl}}/admin/repos"> | |||
{{.i18n.Tr "admin.repositories"}} | |||
</a> | |||
<a class="{{if .PageIsAdminAuthentications}}active{{end}} item" href="{{AppSubUrl}}/admin/auths"> | |||
{{.i18n.Tr "admin.authentication"}} | |||
</a> | |||
<a class="{{if .PageIsAdminConfig}}active{{end}} item" href="{{AppSubUrl}}/admin/config"> | |||
{{.i18n.Tr "admin.config"}} | |||
</a> | |||
<a class="{{if .PageIsAdminNotices}}active{{end}} item" href="{{AppSubUrl}}/admin/notices"> | |||
{{.i18n.Tr "admin.notices"}} | |||
</a> | |||
<a class="{{if .PageIsAdminMonitor}}active{{end}} item" href="{{AppSubUrl}}/admin/monitor"> | |||
{{.i18n.Tr "admin.monitor"}} | |||
</a> | |||
</div> | |||
</div> |
@@ -2,73 +2,73 @@ | |||
<div class="repository settings"> | |||
{{template "repo/header" .}} | |||
<div class="ui container"> | |||
<div class="ui grid"> | |||
{{template "repo/settings/navbar" .}} | |||
<div class="twelve wide column content"> | |||
{{template "base/alert" .}} | |||
<h4 class="ui top attached header"> | |||
{{.i18n.Tr "repo.settings.deploy_keys"}} | |||
<div class="ui right"> | |||
<div id="add-deploy-key" class="ui blue tiny button">{{.i18n.Tr "repo.settings.add_deploy_key"}}</div> | |||
</div> | |||
</h4> | |||
<div class="ui attached segment"> | |||
{{if .Deploykeys}} | |||
<div class="ui key list"> | |||
{{range .Deploykeys}} | |||
<div class="item ui grid"> | |||
<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> | |||
</div> | |||
<div class="one wide column"> | |||
<i class="mega-octicon octicon-key left"></i> | |||
</div> | |||
<div class="eleven wide column"> | |||
<strong>{{.Name}}</strong> | |||
<div class="print meta"> | |||
{{.Fingerprint}} | |||
<div class="ui grid"> | |||
{{template "repo/settings/navbar" .}} | |||
<div class="twelve wide column content"> | |||
{{template "base/alert" .}} | |||
<h4 class="ui top attached header"> | |||
{{.i18n.Tr "repo.settings.deploy_keys"}} | |||
<div class="ui right"> | |||
<div id="add-deploy-key" class="ui blue tiny button">{{.i18n.Tr "repo.settings.add_deploy_key"}}</div> | |||
</div> | |||
</h4> | |||
<div class="ui attached segment"> | |||
{{if .Deploykeys}} | |||
<div class="ui key list"> | |||
{{range .Deploykeys}} | |||
<div class="item ui grid"> | |||
<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> | |||
</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 class="one wide column"> | |||
<i class="mega-octicon octicon-key left"></i> | |||
</div> | |||
<div class="eleven wide column"> | |||
<strong>{{.Name}}</strong> | |||
<div class="print meta"> | |||
{{.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 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> | |||
{{end}} | |||
</div> | |||
{{else}} | |||
{{.i18n.Tr "repo.settings.no_deploy_keys"}} | |||
{{end}} | |||
</div> | |||
{{else}} | |||
{{.i18n.Tr "repo.settings.no_deploy_keys"}} | |||
{{end}} | |||
</div> | |||
<br> | |||
<div {{if not .HasError}}class="hide"{{end}} id="add-deploy-key-panel"> | |||
<h4 class="ui top attached header"> | |||
{{.i18n.Tr "repo.settings.add_deploy_key"}} | |||
</h4> | |||
<div class="ui attached segment"> | |||
<form class="ui form" action="{{.Link}}" method="post"> | |||
{{.CsrfTokenHtml}} | |||
<div class="field {{if .Err_Title}}error{{end}}"> | |||
<label>{{.i18n.Tr "repo.settings.title"}}</label> | |||
<input name="title" value="{{.title}}" autofocus required> | |||
</div> | |||
<div class="field {{if .Err_Content}}error{{end}}"> | |||
<label>{{.i18n.Tr "repo.settings.deploy_key_content"}}</label> | |||
<textarea name="content" required>{{.content}}</textarea> | |||
</div> | |||
<button class="ui green button"> | |||
{{.i18n.Tr "repo.settings.add_deploy_key"}} | |||
</button> | |||
</form> | |||
<br> | |||
<div {{if not .HasError}}class="hide"{{end}} id="add-deploy-key-panel"> | |||
<h4 class="ui top attached header"> | |||
{{.i18n.Tr "repo.settings.add_deploy_key"}} | |||
</h4> | |||
<div class="ui attached segment"> | |||
<form class="ui form" action="{{.Link}}" method="post"> | |||
{{.CsrfTokenHtml}} | |||
<div class="field {{if .Err_Title}}error{{end}}"> | |||
<label>{{.i18n.Tr "repo.settings.title"}}</label> | |||
<input name="title" value="{{.title}}" autofocus required> | |||
</div> | |||
<div class="field {{if .Err_Content}}error{{end}}"> | |||
<label>{{.i18n.Tr "repo.settings.deploy_key_content"}}</label> | |||
<textarea name="content" required>{{.content}}</textarea> | |||
</div> | |||
<button class="ui green button"> | |||
{{.i18n.Tr "repo.settings.add_deploy_key"}} | |||
</button> | |||
</form> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
</div> | |||
<div class="ui small basic delete modal"> | |||