mirror of
https://codeberg.org/forgejo/forgejo
synced 2025-10-19 23:30:51 +02:00
Followup to https://codeberg.org/forgejo/forgejo/pulls/8513 More at https://codeberg.org/fedora/forgejo-deployment/issues/186 Related: https://codeberg.org/forgejo/forgejo/pulls/8513#issuecomment-6075304, https://codeberg.org/forgejo/forgejo/pulls/8513/files#issuecomment-6075322 Previously, users were getting confused about the token/private issues behavior in the Pagure migrator, as the UI didn't clearly explain the two-repository workflow or the security implications of using an API token. This commit updates the Pagure migration template to make the behavior clearer by: - Adding a collapsible details section for private issues functionality to reduce UI clutter since this feature is not expected to be used frequently - Replacing inline help text with proper Fomantic UI message boxes (blue info for description, red warning for security notice) - Providing clear explanations of the two-step migration process (public content first, then private issues archive) - Adding prominent security warnings about repository visibility when importing private content The private issues section is now hidden by default in a collapsible element, making the standard migration flow cleaner while still providing access to advanced functionality when needed. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/9502 Reviewed-by: 0ko <0ko@noreply.codeberg.org> Co-authored-by: Ryan Lerch <rlerch@redhat.com> Co-committed-by: Ryan Lerch <rlerch@redhat.com>
129 lines
5.3 KiB
Go HTML Template
129 lines
5.3 KiB
Go HTML Template
{{template "base/head" .}}
|
|
<div role="main" aria-label="{{.Title}}" class="page-content repository new migrate">
|
|
<div class="ui middle very relaxed page grid">
|
|
<div class="column">
|
|
<form class="ui form" action="{{.Link}}" method="post">
|
|
{{template "base/disable_form_autofill"}}
|
|
{{.CsrfTokenHtml}}
|
|
<h3 class="ui top attached header">
|
|
{{ctx.Locale.Tr "repo.migrate.migrate" .service.Title}}
|
|
<input id="service_type" type="hidden" name="service" value="{{.service}}">
|
|
</h3>
|
|
<div class="ui attached segment">
|
|
{{template "base/alert" .}}
|
|
<div class="inline required field {{if .Err_CloneAddr}}error{{end}}">
|
|
<label for="clone_addr">{{ctx.Locale.Tr "migrate.pagure.project_url"}}</label>
|
|
<input id="clone_addr" name="clone_addr" value="{{.clone_addr}}" autofocus required autocomplete="url">
|
|
<span class="help">
|
|
{{ctx.Locale.Tr "migrate.pagure.project_example"}}
|
|
{{if .Err_CloneAddr}}
|
|
{{ctx.Locale.Tr "migrate.pagure.incorrect_url"}}
|
|
{{end}}
|
|
</span>
|
|
</div>
|
|
<div class="inline required field {{if .Err_RepoName}}error{{end}}">
|
|
<label for="repo_name">{{ctx.Locale.Tr "repo.repo_name"}}</label>
|
|
<input id="repo_name" name="repo_name" value="{{.repo_name}}" required maxlength="100">
|
|
</div>
|
|
{{template "repo/migrate/options" .}}
|
|
<div id="migrate_items">
|
|
<div class="inline field">
|
|
<label>{{ctx.Locale.Tr "repo.migrate_items"}}</label>
|
|
<div class="ui checkbox">
|
|
<input name="issues" type="checkbox" {{if .issues}}checked{{end}}>
|
|
<label>{{ctx.Locale.Tr "repo.migrate_items_issues"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="inline field">
|
|
<label></label>
|
|
<div class="ui checkbox">
|
|
<input name="pull_requests" type="checkbox" {{if .pull_requests}}checked{{end}}>
|
|
<label>{{ctx.Locale.Tr "repo.migrate_items_pullrequests"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="inline field">
|
|
<label></label>
|
|
<div class="ui checkbox">
|
|
<input name="labels" type="checkbox" {{if .labels}}checked{{end}}>
|
|
<label>{{ctx.Locale.Tr "repo.migrate_items_labels"}}</label>
|
|
</div>
|
|
</div>
|
|
<div class="inline field">
|
|
<label></label>
|
|
<div class="ui checkbox">
|
|
<input name="milestones" type="checkbox" {{if .milestones}}checked{{end}}>
|
|
<label>{{ctx.Locale.Tr "repo.migrate_items_milestones"}}</label>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="divider"></div>
|
|
<div class="inline required field {{if .Err_Owner}}error{{end}}">
|
|
<label>{{ctx.Locale.Tr "repo.owner"}}</label>
|
|
<div class="ui selection owner dropdown">
|
|
<input type="hidden" id="uid" name="uid" value="{{.ContextUser.ID}}" required>
|
|
<span class="text truncated-item-container" title="{{.ContextUser.Name}}">
|
|
{{ctx.AvatarUtils.Avatar .ContextUser 28 "mini"}}
|
|
<span class="truncated-item-name">{{.ContextUser.ShortName 40}}</span>
|
|
</span>
|
|
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
|
<div class="menu" title="{{.SignedUser.Name}}">
|
|
<div class="item truncated-item-container" data-value="{{.SignedUser.ID}}">
|
|
{{ctx.AvatarUtils.Avatar .SignedUser 28 "mini"}}
|
|
<span class="truncated-item-name">{{.SignedUser.ShortName 40}}</span>
|
|
</div>
|
|
{{range .Orgs}}
|
|
<div class="item truncated-item-container" data-value="{{.ID}}" title="{{.Name}}">
|
|
{{ctx.AvatarUtils.Avatar . 28 "mini"}}
|
|
<span class="truncated-item-name">{{.ShortName 40}}</span>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="inline field">
|
|
<label>{{ctx.Locale.Tr "repo.visibility"}}</label>
|
|
<div class="ui checkbox">
|
|
<input name="private" type="checkbox"
|
|
{{if .IsForcedPrivate}}
|
|
checked disabled
|
|
{{else}}
|
|
{{if .private}}checked{{end}}
|
|
{{end}}>
|
|
<label>{{ctx.Locale.Tr "repo.visibility_helper"}}</label>
|
|
</div>
|
|
{{if .IsForcedPrivate}}
|
|
<span class="help">{{ctx.Locale.Tr "repo.visibility_helper_forced"}}</span>
|
|
{{end}}
|
|
<span class="help">{{ctx.Locale.Tr "repo.visibility_description"}}</span>
|
|
</div>
|
|
<div class="divider"></div>
|
|
<details class="ui optional field">
|
|
<summary class="tw-p-1">
|
|
{{ctx.Locale.Tr "migrate.pagure.private_issues.summary"}}
|
|
</summary>
|
|
<div class="tw-p-1">
|
|
<div class="ui blue message">
|
|
{{ctx.Locale.Tr "migrate.pagure.private_issues.description"}}
|
|
</div>
|
|
<div class="ui red message">
|
|
{{ctx.Locale.Tr "migrate.pagure.private_issues.warning"}}
|
|
</div>
|
|
<div class="field {{if .Err_Auth}}error{{end}}">
|
|
<label for="auth_token">{{ctx.Locale.Tr "migrate.pagure.token_label"}}</label>
|
|
<input id="auth_token" name="auth_token" value="{{.auth_token}}" placeholder="{{ctx.Locale.Tr "migrate.pagure.token.placeholder"}}" {{if not .auth_token}}data-need-clear="true"{{end}}>
|
|
</div>
|
|
</div>
|
|
</details>
|
|
<div class="divider"></div>
|
|
<div class="inline field">
|
|
<label></label>
|
|
<button class="ui primary button">
|
|
{{ctx.Locale.Tr "repo.migrate_repo"}}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{template "base/footer" .}}
|