46679554d0
- Very similar to #24550 The correct thing to do is to translate the entire phrase into a single string. The previous translation assumed all languages have a space between the "added on" and the date (and that "added on" comes before the date). Some languages, like Hebrew, have no space between the "added on" and the date. For example: ```ini added_on=נוסף ב-%s ``` ("added" becomes נוסף, "on" is ב and when paired with a date we use a dash to connect ב with the date) --------- Signed-off-by: Yarden Shoham <git@yardenshoham.com> Co-authored-by: delvh <dev.lh@web.de>
112 lines
5.1 KiB
Handlebars
112 lines
5.1 KiB
Handlebars
<h4 class="ui top attached header">
|
|
{{.locale.Tr "settings.manage_ssh_keys"}}
|
|
<div class="ui right">
|
|
<button id="add-ssh-button" class="ui primary tiny show-panel button" data-panel="#add-ssh-key-panel">
|
|
{{.locale.Tr "settings.add_key"}}
|
|
</button>
|
|
</div>
|
|
</h4>
|
|
<div class="ui attached segment">
|
|
<div class="{{if not .HasSSHError}}gt-hidden{{end}} gt-mb-4" id="add-ssh-key-panel">
|
|
<form class="ui form" action="{{.Link}}" method="post">
|
|
{{.CsrfTokenHtml}}
|
|
<div class="field {{if .Err_Title}}error{{end}}">
|
|
<label for="title">{{.locale.Tr "settings.key_name"}}</label>
|
|
<input id="ssh-key-title" name="title" value="{{.title}}" autofocus required>
|
|
</div>
|
|
<div class="field {{if .Err_Content}}error{{end}}">
|
|
<label for="content">{{.locale.Tr "settings.key_content"}}</label>
|
|
<textarea id="ssh-key-content" name="content" class="js-quick-submit" placeholder="{{.locale.Tr "settings.key_content_ssh_placeholder"}}" required>{{.content}}</textarea>
|
|
</div>
|
|
<input name="type" type="hidden" value="ssh">
|
|
<button class="ui green button">
|
|
{{.locale.Tr "settings.add_key"}}
|
|
</button>
|
|
<button id="cancel-ssh-button" class="ui hide-panel button" data-panel="#add-ssh-key-panel">
|
|
{{.locale.Tr "cancel"}}
|
|
</button>
|
|
</form>
|
|
</div>
|
|
<div class="ui key list gt-mt-0">
|
|
<div class="item">
|
|
{{.locale.Tr "settings.ssh_desc"}}
|
|
</div>
|
|
{{if .DisableSSH}}
|
|
<div class="item">
|
|
{{.locale.Tr "settings.ssh_signonly"}}
|
|
</div>
|
|
{{end}}
|
|
{{range $index, $key := .Keys}}
|
|
<div class="item">
|
|
<div class="right floated content">
|
|
<button class="ui red tiny button delete-button{{if index $.ExternalKeys $index}} disabled{{end}}" data-modal-id="delete-ssh" data-url="{{$.Link}}/delete?type=ssh" data-id="{{.ID}}"{{if index $.ExternalKeys $index}} title="{{$.locale.Tr "settings.ssh_externally_managed"}}"{{end}}>
|
|
{{$.locale.Tr "settings.delete_key"}}
|
|
</button>
|
|
{{if and (not .Verified) (ne $.VerifyingFingerprint .Fingerprint)}}
|
|
<a class="ui primary tiny button" href="{{$.Link}}?verify_ssh={{.Fingerprint}}">{{$.locale.Tr "settings.ssh_key_verify"}}</a>
|
|
{{end}}
|
|
|
|
</div>
|
|
<div class="left floated content">
|
|
<span class="text {{if .HasRecentActivity}}green{{end}}" {{if .HasRecentActivity}}data-tooltip-content="{{$.locale.Tr "settings.key_state_desc"}}"{{end}}>{{svg "octicon-key" 32}}</span>
|
|
</div>
|
|
<div class="content">
|
|
{{if .Verified}}
|
|
<span data-tooltip-content="{{$.locale.Tr "settings.ssh_key_verified_long"}}">{{svg "octicon-verified"}} <strong>{{$.locale.Tr "settings.ssh_key_verified"}}</strong></span>
|
|
{{end}}
|
|
<strong>{{.Name}}</strong>
|
|
<div class="print meta">
|
|
{{.Fingerprint}}
|
|
</div>
|
|
<div class="activity meta">
|
|
<i>{{$.locale.Tr "settings.add_on" (DateTime "short" .CreatedUnix) | Safe}} — {{svg "octicon-info"}} {{if .HasUsed}}{{$.locale.Tr "settings.last_used"}} <span {{if .HasRecentActivity}}class="green"{{end}}>{{DateTime "short" .UpdatedUnix}}</span>{{else}}{{$.locale.Tr "settings.no_activity"}}{{end}}</i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{if and (not .Verified) (eq $.VerifyingFingerprint .Fingerprint)}}
|
|
<div class="ui segment">
|
|
<h4>{{$.locale.Tr "settings.ssh_token_required"}}</h4>
|
|
<form class="ui form{{if $.HasSSHVerifyError}} error{{end}}" action="{{$.Link}}" method="post">
|
|
{{$.CsrfTokenHtml}}
|
|
<input type="hidden" name="title" value="none">
|
|
<input type="hidden" name="content" value="{{.Content}}">
|
|
<input type="hidden" name="fingerprint" value="{{.Fingerprint}}">
|
|
<div class="field">
|
|
<label for="token">{{$.locale.Tr "settings.ssh_token"}}</label>
|
|
<input readonly="" value="{{$.TokenToSign}}">
|
|
<div class="help">
|
|
<p>{{$.locale.Tr "settings.ssh_token_help"}}</p>
|
|
<p><code>{{printf "echo -n '%s' | ssh-keygen -Y sign -n gitea -f /path_to_your_privkey" $.TokenToSign}}</code></p>
|
|
</div>
|
|
<br>
|
|
</div>
|
|
<div class="field">
|
|
<label for="signature">{{$.locale.Tr "settings.ssh_token_signature"}}</label>
|
|
<textarea id="ssh-key-signature" name="signature" class="js-quick-submit" placeholder="{{$.locale.Tr "settings.key_signature_ssh_placeholder"}}" required>{{$.signature}}</textarea>
|
|
</div>
|
|
<input name="type" type="hidden" value="verify_ssh">
|
|
<button class="ui green button">
|
|
{{$.locale.Tr "settings.ssh_key_verify"}}
|
|
</button>
|
|
<a class="ui red button" href="{{$.Link}}">
|
|
{{$.locale.Tr "settings.cancel"}}
|
|
</a>
|
|
</form>
|
|
</div>
|
|
{{end}}
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
<br>
|
|
<p>{{.locale.Tr "settings.ssh_helper" "https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh" "https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/troubleshooting-ssh" | Str2html}}</p>
|
|
|
|
<div class="ui g-modal-confirm delete modal" id="delete-ssh">
|
|
<div class="header">
|
|
{{svg "octicon-trash"}}
|
|
{{.locale.Tr "settings.ssh_key_deletion"}}
|
|
</div>
|
|
<div class="content">
|
|
<p>{{.locale.Tr "settings.ssh_key_deletion_desc"}}</p>
|
|
</div>
|
|
{{template "base/modal_actions_confirm" .}}
|
|
</div>
|