Files
Gitea/templates/user/dashboard/repolist.tmpl
T
silverwind c6836d0abb refactor: migrate remaining Vue components to <script setup> (#38752)
Migrates the last four Options API components, so all 20 `.vue` files
now use `<script setup>`, and disables the Vue Options API runtime. This
will enable optimizations like Vue Vapor mode in the future.

Bug fixes done while migrating and testing:

- Branch selector: arrowing onto "Create branch …" threw a `TypeError`,
and Enter on it did nothing
- Dashboard: the search term was not escaped, so `&` injected query
parameters and `#` truncated the request
- Dashboard: an unknown `repo-search-filter` threw, and names like
`constructor` leaked `Object.prototype` members into the request
- Dashboard: an unknown archived/private filter rendered `function
Object() { [native code] }` as a checkbox tooltip
- Dashboard: removed a dropdown init that always ran against a
not-yet-rendered element
- Branch selector: the `document.body` click listener was never removed
on unmount
- Contributors: the chart plugin relied on an undeclared chart.js field
- Contributors: `contributorsStats` was mutated behind a `shallowRef`,
so future readers would not update
- Removed template attributes and pageData keys that no component had
read for years

---------

Signed-off-by: silverwind <me@silverwind.io>
2026-08-06 05:45:31 +00:00

61 lines
2.4 KiB
Handlebars

<script nonce="{{ctx.CspScriptNonce}}" type="module">
const data = {
...window.config.pageData.dashboardRepoList, // it only contains searchLimit and uid
isMirrorsEnabled: {{.MirrorsEnabled}},
textNoOrg: {{ctx.Locale.Tr "home.empty_org"}},
textNoRepo: {{ctx.Locale.Tr "home.empty_repo"}},
textRepository: {{ctx.Locale.Tr "repository"}},
textOrganization: {{ctx.Locale.Tr "organization"}},
textMyRepos: {{ctx.Locale.Tr "home.my_repos"}},
textNewRepo: {{ctx.Locale.Tr "new_repo"}},
textSearchRepos: {{ctx.Locale.Tr "search.repo_kind"}},
textFilter: {{ctx.Locale.Tr "home.filter"}},
textShowArchived: {{ctx.Locale.Tr "home.show_archived"}},
textShowPrivate: {{ctx.Locale.Tr "home.show_private"}},
textShowBothArchivedUnarchived: {{ctx.Locale.Tr "home.show_both_archived_unarchived"}},
textShowOnlyUnarchived: {{ctx.Locale.Tr "home.show_only_unarchived"}},
textShowOnlyArchived: {{ctx.Locale.Tr "home.show_only_archived"}},
textShowBothPrivatePublic: {{ctx.Locale.Tr "home.show_both_private_public"}},
textShowOnlyPublic: {{ctx.Locale.Tr "home.show_only_public"}},
textShowOnlyPrivate: {{ctx.Locale.Tr "home.show_only_private"}},
textAll: {{ctx.Locale.Tr "all"}},
textSources: {{ctx.Locale.Tr "sources"}},
textForks: {{ctx.Locale.Tr "forks"}},
textMirrors: {{ctx.Locale.Tr "mirrors"}},
textCollaborative: {{ctx.Locale.Tr "collaborative"}},
textFirstPage: {{ctx.Locale.Tr "admin.first_page"}},
textPreviousPage: {{ctx.Locale.Tr "repo.issues.previous"}},
textNextPage: {{ctx.Locale.Tr "repo.issues.next"}},
textLastPage: {{ctx.Locale.Tr "admin.last_page"}},
textMyOrgs: {{ctx.Locale.Tr "home.my_orgs"}},
textNewOrg: {{ctx.Locale.Tr "new_org"}},
textOrgVisibilityLimited: {{ctx.Locale.Tr "org.settings.visibility.limited_shortname"}},
textOrgVisibilityPrivate: {{ctx.Locale.Tr "org.settings.visibility.private_shortname"}},
};
{{if .Team}}
data.teamId = {{.Team.ID}};
{{end}}
{{if not .ContextUser.IsOrganization}}
data.organizations = [{{range .Orgs}}{'name': {{.Name}}, 'full_name': {{.FullName}}, 'num_repos': {{.NumRepos}}, 'org_visibility': {{.Visibility}}},{{end}}];
data.isOrganization = false;
data.organizationsTotalCount = {{.UserOrgsCount}};
data.canCreateOrganization = {{.SignedUser.CanCreateOrganization}};
{{else}}
data.organizationId = {{.ContextUser.ID}};
{{end}}
window.config.pageData.dashboardRepoList = data;
</script>
<div id="dashboard-repo-list" class="flex-container-sidebar"></div>