mirror of
https://github.com/hanzoai/forge.git
synced 2026-10-30 15:00:39 +00:00
Finishes the residual pass: the bulk of served leaks remained (28 locale files, most templates, all raster/source assets, Chinese READMEs). Imports, identifiers, and wire contracts are left intact. - locale: 28 files, all "Gitea" -> "Hanzo Git"; docs/blog/about.gitea.* + gitea.com/.io + go-gitea help URLs -> docs.hanzo.ai / git.hanzo.ai / github.com/hanzoai/git (keys with lowercase "gitea" preserved) - templates: footer, swagger UI title + generated OpenAPI specs (stale gitea.dev x-go-package -> github.com/hanzoai/git), webhook usernames, OAuth-source labels, package/help doc links, example org/team identifiers - Go served defaults: RSS feed author/description, git commit user.name + fallback email, WWW-Authenticate realms (OAuth2/packages/container), 500/error pages, MS Teams card, built-in OAuth provider label, CLI --help, SSH + push-rejection messages, startup/index/redis/doctor logs, test-mail subject + X-Mailer - config: app.example.ini APP_NAME default - assets: source assets/*.svg, gitea.svg, gitea-gitea sprite, and all PNGs (logo/favicon/apple-touch/avatar_default) regenerated as the committed black-tile Hanzo mark; --color-logo #609926 -> monochrome; favicon-status test realigned to the new mark (viewBox 64) - README.zh-tw + README.zh-cn rewritten as Hanzo Git - render field CommitParticipant.GiteaUser -> User Preserved (imports / identifiers / external contracts): code.gitea.io, module github.com/hanzoai/git, gitea.dev/sdk dep, X-Gitea-* webhook + email headers, WWW-Authenticate realm="Gitea" in git-HTTP (Git Credential Manager OAuth2 detection), GitServiceType "Gitea" migration-source name, theme id gitea-auto, .gitea-* classes / svg symbol ids, Go/JS identifiers, "The Gitea Authors" copyright headers, outbound User-Agent headers. Co-authored-by: Hanzo Dev <[email protected]>
183 lines
7.8 KiB
Handlebars
183 lines
7.8 KiB
Handlebars
<nav id="navbar" aria-label="{{ctx.Locale.Tr "aria.navbar"}}">
|
|
<div class="navbar-left">
|
|
<!-- the logo -->
|
|
<a class="item" id="navbar-logo" href="{{AppSubUrl}}/" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home_title"}}{{end}}">
|
|
<img width="30" height="30" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}" aria-hidden="true">
|
|
</a>
|
|
|
|
<!-- mobile right menu, it must be here because in mobile view, each item is a flex column, the first item is a full row column -->
|
|
<div class="ui secondary menu navbar-mobile-right only-mobile">
|
|
{{template "base/head_navbar_icons" dict "PageGlobalData" .PageGlobalData}}
|
|
<button class="item ui icon mini button tw-m-0" id="navbar-expand-toggle" aria-label="{{ctx.Locale.Tr "home.nav_menu"}}">{{svg "octicon-three-bars"}}</button>
|
|
</div>
|
|
|
|
<!-- navbar links non-mobile -->
|
|
{{if and .IsSigned .MustChangePassword}}
|
|
{{/* No links */}}
|
|
{{else if .IsSigned}}
|
|
{{if not ctx.Consts.RepoUnitTypeIssues.UnitGlobalDisabled}}
|
|
<a class="item{{if .PageIsIssues}} active{{end}}" href="{{AppSubUrl}}/issues">{{ctx.Locale.Tr "issues"}}</a>
|
|
{{end}}
|
|
{{if not ctx.Consts.RepoUnitTypePullRequests.UnitGlobalDisabled}}
|
|
<a class="item{{if .PageIsPulls}} active{{end}}" href="{{AppSubUrl}}/pulls">{{ctx.Locale.Tr "pull_requests"}}</a>
|
|
{{end}}
|
|
{{if not (and ctx.Consts.RepoUnitTypeIssues.UnitGlobalDisabled ctx.Consts.RepoUnitTypePullRequests.UnitGlobalDisabled)}}
|
|
{{if .ShowMilestonesDashboardPage}}
|
|
<a class="item{{if .PageIsMilestonesDashboard}} active{{end}}" href="{{AppSubUrl}}/milestones">{{ctx.Locale.Tr "milestones"}}</a>
|
|
{{end}}
|
|
{{end}}
|
|
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore_title"}}</a>
|
|
{{else if .IsLandingPageOrganizations}}
|
|
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/organizations">{{ctx.Locale.Tr "explore_title"}}</a>
|
|
{{else}}
|
|
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore_title"}}</a>
|
|
{{end}}
|
|
|
|
{{template "custom/extra_links" .}}
|
|
|
|
{{if not .IsSigned}}
|
|
<a class="item" target="_blank" href="https://docs.hanzo.ai">{{ctx.Locale.Tr "help"}}</a>
|
|
{{end}}
|
|
</div>
|
|
|
|
<!-- the full dropdown menus -->
|
|
<div class="navbar-right">
|
|
{{if and .IsSigned .MustChangePassword}}
|
|
<div class="ui dropdown jump item" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}">
|
|
<span class="text">
|
|
{{ctx.AvatarUtils.Avatar .SignedUser 24 "tw-mr-1"}}
|
|
<span class="only-mobile">{{.SignedUser.Name}}</span>
|
|
<span class="not-mobile flex-text-block">{{svg "octicon-triangle-down"}}</span>
|
|
</span>
|
|
<div class="menu user-menu">
|
|
<div class="header">
|
|
{{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
|
|
</div>
|
|
|
|
<div class="divider"></div>
|
|
<a class="item" href="{{AppSubUrl}}/user/logout">
|
|
{{svg "octicon-sign-out"}}
|
|
{{ctx.Locale.Tr "sign_out"}}
|
|
</a>
|
|
</div><!-- end content avatar menu -->
|
|
</div><!-- end dropdown avatar menu -->
|
|
{{else if .IsSigned}}
|
|
{{template "base/head_navbar_icons" dict "ItemExtraClass" "not-mobile" "PageGlobalData" .PageGlobalData}}
|
|
<div class="ui dropdown jump item" data-tooltip-content="{{ctx.Locale.Tr "create_new"}}">
|
|
<span class="flex-text-block">
|
|
{{svg "octicon-plus"}}
|
|
<span class="not-mobile flex-text-block">{{svg "octicon-triangle-down"}}</span>
|
|
<span class="only-mobile">{{ctx.Locale.Tr "create_new"}}</span>
|
|
</span>
|
|
<div class="menu">
|
|
<a class="item" href="{{AppSubUrl}}/repo/create">
|
|
{{svg "octicon-plus"}} {{ctx.Locale.Tr "new_repo"}}
|
|
</a>
|
|
{{if not .DisableMigrations}}
|
|
<a class="item" href="{{AppSubUrl}}/repo/migrate">
|
|
{{svg "octicon-repo-push"}} {{ctx.Locale.Tr "new_migrate"}}
|
|
</a>
|
|
{{end}}
|
|
{{if .SignedUser.CanCreateOrganization}}
|
|
<a class="item" href="{{AppSubUrl}}/org/create">
|
|
{{svg "octicon-organization"}} {{ctx.Locale.Tr "new_org"}}
|
|
</a>
|
|
{{end}}
|
|
</div><!-- end content create new menu -->
|
|
</div><!-- end dropdown menu create new -->
|
|
|
|
<div class="ui dropdown jump item" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}">
|
|
<span class="text tw-flex tw-items-center">
|
|
<span class="navbar-avatar">
|
|
{{ctx.AvatarUtils.Avatar .SignedUser 24 "tw-mr-2"}}
|
|
{{if .IsAdmin}}{{svg "octicon-shield-check" 16 "navbar-admin-badge"}}{{end}}
|
|
</span>
|
|
<span class="only-mobile">{{.SignedUser.Name}}</span>
|
|
<span class="not-mobile flex-text-block">{{svg "octicon-triangle-down"}}</span>
|
|
</span>
|
|
<div class="menu user-menu">
|
|
<div class="header">
|
|
{{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
|
|
</div>
|
|
|
|
<div class="divider"></div>
|
|
<a class="item" href="{{.SignedUser.HomeLink}}">
|
|
{{svg "octicon-person"}}
|
|
{{ctx.Locale.Tr "your_profile"}}
|
|
</a>
|
|
{{if not .DisableStars}}
|
|
<a class="item" href="{{.SignedUser.HomeLink}}?tab=stars">
|
|
{{svg "octicon-star"}}
|
|
{{ctx.Locale.Tr "your_starred"}}
|
|
</a>
|
|
{{end}}
|
|
<a class="item" href="{{AppSubUrl}}/notifications/subscriptions">
|
|
{{svg "octicon-bell"}}
|
|
{{ctx.Locale.Tr "notification.subscriptions"}}
|
|
</a>
|
|
<a class="{{if .PageIsUserSettings}}active {{end}}item" href="{{AppSubUrl}}/user/settings">
|
|
{{svg "octicon-tools"}}
|
|
{{ctx.Locale.Tr "your_settings"}}
|
|
</a>
|
|
<a class="item" target="_blank" href="https://docs.hanzo.ai">
|
|
{{svg "octicon-question"}}
|
|
{{ctx.Locale.Tr "help"}}
|
|
</a>
|
|
{{if .IsAdmin}}
|
|
<div class="divider"></div>
|
|
<a class="{{if .PageIsAdmin}}active {{end}}item" href="{{AppSubUrl}}/-/admin">
|
|
{{svg "octicon-server"}}
|
|
{{ctx.Locale.Tr "admin_panel"}}
|
|
</a>
|
|
{{end}}
|
|
<div class="divider"></div>
|
|
<a class="item" href="{{AppSubUrl}}/user/logout">
|
|
{{svg "octicon-sign-out"}}
|
|
{{ctx.Locale.Tr "sign_out"}}
|
|
</a>
|
|
</div><!-- end content avatar menu -->
|
|
</div><!-- end dropdown avatar menu -->
|
|
{{else}}
|
|
{{if .ShowRegistrationButton}}
|
|
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up">
|
|
{{svg "octicon-person"}}
|
|
<span class="tw-ml-1">{{ctx.Locale.Tr "register"}}</span>
|
|
</a>
|
|
{{end}}
|
|
<a class="item{{if .PageIsSignIn}} active{{end}}" rel="nofollow" href="{{AppSubUrl}}/user/login">
|
|
{{svg "octicon-sign-in"}}
|
|
<span class="tw-ml-1">{{ctx.Locale.Tr "sign_in"}}</span>
|
|
</a>
|
|
{{end}}
|
|
</div><!-- end full right menu -->
|
|
|
|
{{$activeStopwatch := and .PageGlobalData (call .PageGlobalData.GetActiveStopwatch)}}
|
|
{{if $activeStopwatch}}
|
|
<div class="active-stopwatch-popup tippy-target">
|
|
<div class="flex-text-block tw-p-3">
|
|
<a class="stopwatch-link flex-text-block muted" href="{{$activeStopwatch.IssueLink}}">
|
|
{{svg "octicon-issue-opened" 16}}
|
|
<span class="stopwatch-issue">{{$activeStopwatch.RepoSlug}}#{{$activeStopwatch.IssueIndex}}</span>
|
|
</a>
|
|
<div class="tw-flex tw-gap-1">
|
|
<form class="stopwatch-commit form-fetch-action" method="post" action="{{$activeStopwatch.IssueLink}}/times/stopwatch/stop">
|
|
<button
|
|
type="submit"
|
|
class="ui button mini compact basic icon tw-mr-0"
|
|
data-tooltip-content="{{ctx.Locale.Tr "repo.issues.stop_tracking"}}"
|
|
>{{svg "octicon-square-fill"}}</button>
|
|
</form>
|
|
<form class="stopwatch-cancel form-fetch-action" method="post" action="{{$activeStopwatch.IssueLink}}/times/stopwatch/cancel">
|
|
<button
|
|
type="submit"
|
|
class="ui button mini compact basic icon tw-mr-0"
|
|
data-tooltip-content="{{ctx.Locale.Tr "repo.issues.cancel_tracking"}}"
|
|
>{{svg "octicon-trash"}}</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
</nav>
|
|
{{template "base/head_banner"}}
|