gogs/templates/base/head.tmpl
Achilleas Koutsou dc13eb6df0 pkg/context: Render live notice banner from file (#5750)
* pkg/context: Render live notice banner from file

- Contexter checks if there is a file called 'notice' under the
GOGS_CUSTOM directory and loads it.
- The first line is treated as a header/title and everything else as the
message body.
- Message body is rendered as HTML (tags allowed).
- File size is limited to 1024 bytes.
- File mime type must be text.
- Notice is rendered in head.tmpl for all pages.

* pkg/context: Rename maxlen to maxSize

Rename maxlen to maxSize for the maximum size (in bytes) of the notice
file to render.
Define the variable when needed to avoid instantiating it when the file
doesn't exist.

Co-Authored-By: ᴊ. ᴄʜᴇɴ <u@gogs.io>

* pkg/context: Package name after license header

Co-Authored-By: ᴊ. ᴄʜᴇɴ <u@gogs.io>

* pkg/context: Don't print 'Found notice file'

Becomes too verbose as it prints on every page load when the file
exists.

* pkg/context: Match project conventions

Import order and grouping

Variable names:
    fileloc -> fpath
    fp -> f
    finfo -> fi

* pkg/context: Remove empty line

Co-Authored-By: ᴊ. ᴄʜᴇɴ <u@gogs.io>

* pkg/context: Render notice as markdown

Server notice file should be named 'notice.md'.  The contents of the
file are treated as markdown and rendered as a warning message at the
top of every page.

* Update notice.go


Co-authored-by: ᴊ. ᴄʜᴇɴ <u@gogs.io>
2019-07-27 23:47:35 -07:00

208 lines
9.0 KiB
Cheetah

<!DOCTYPE html>
<html>
<head data-suburl="{{AppSubURL}}">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
{{if not .PageIsAdmin}}
<meta name="author" content="{{if .Repository}}{{.Owner.Name}}{{else}}Gogs{{end}}" />
<meta name="description" content="{{if .Repository}}{{.Repository.Name}}{{if .Repository.Description}} - {{.Repository.Description}}{{end}}{{else}}Gogs is a painless self-hosted Git service{{end}}" />
<meta name="keywords" content="go, git, self-hosted, gogs">
{{end}}
<meta name="referrer" content="no-referrer" />
<meta name="_csrf" content="{{.CSRFToken}}" />
<meta name="_suburl" content="{{AppSubURL}}" />
<!-- Open Graph Tags -->
{{if .PageIsAdmin}}
{{else if .PageIsUserProfile}}
<meta property="og:url" content="{{.Owner.HTMLURL}}" />
<meta property="og:type" content="profile" />
<meta property="og:title" content="{{.Owner.Name}}{{if .Owner.FullName}} ({{.Owner.FullName}}){{end}}">
<meta property="og:description" content="{{.Owner.Name}} has {{.Owner.NumFollowers}} followers and is following {{.Owner.NumFollowing}} people.">
<meta property="og:image" content="{{.Owner.AvatarLink}}" />
{{else if .Repository}}
<meta property="og:url" content="{{.Repository.HTMLURL}}" />
<meta property="og:type" content="object" />
<meta property="og:title" content="{{.Repository.FullName}}">
<meta property="og:description" content="{{.Repository.Description}}">
<meta property="og:image" content="{{.Repository.Owner.AvatarLink}}" />
{{else}}
<meta property="og:url" content="{{AppURL}}" />
<meta property="og:type" content="website" />
<meta property="og:title" content="{{AppName}}">
<meta property="og:description" content="Gogs is a painless self-hosted Git service.">
<meta property="og:image" content="{{AppURL}}img/gogs-lg.png" />
<meta property="og:site_name" content="Gogs">
{{end}}
<link rel="shortcut icon" href="{{AppSubURL}}/img/favicon.png" />
<script src="{{AppSubURL}}/js/jquery-1.11.3.min.js"></script>
<script src="{{AppSubURL}}/js/libs/jquery.are-you-sure.js"></script>
<link rel="stylesheet" href="{{AppSubURL}}/assets/font-awesome-4.6.3/css/font-awesome.min.css">
<link rel="stylesheet" href="{{AppSubURL}}/assets/octicons-4.3.0/octicons.min.css">
<!-- notebook.js for rendering ipython notebooks and marked.js for rendering markdown in notebooks -->
{{if .IsIPythonNotebook}}
<script src="{{AppSubURL}}/plugins/notebookjs-0.3.0/notebook.min.js"></script>
<script src="{{AppSubURL}}/plugins/marked-0.3.6/marked.min.js"></script>
{{end}}
{{if .RequireSimpleMDE}}
<link rel="stylesheet" href="{{AppSubURL}}/plugins/simplemde-1.10.1/simplemde.min.css">
<script src="{{AppSubURL}}/plugins/simplemde-1.10.1/simplemde.min.js"></script>
<script src="{{AppSubURL}}/plugins/codemirror-5.17.0/addon/mode/loadmode.js"></script>
<script src="{{AppSubURL}}/plugins/codemirror-5.17.0/mode/meta.js"></script>
<script>
CodeMirror.modeURL = "{{AppSubURL}}/plugins/codemirror-5.17.0/mode/%N/%N.js";
</script>
{{end}}
<!-- Stylesheet -->
<link rel="stylesheet" href="{{AppSubURL}}/css/semantic-2.3.1.min.css">
<link rel="stylesheet" href="{{AppSubURL}}/css/gogs.css?v={{MD5 AppVer}}">
<noscript>
<style>
.dropdown:hover > .menu { display: block; }
.ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
</style>
</noscript>
<!-- JavaScript -->
<script src="{{AppSubURL}}/js/semantic-2.3.1.min.js"></script>
<script src="{{AppSubURL}}/js/gogs.js?v={{MD5 AppVer}}"></script>
<title>{{if .Title}}{{.Title}} - {{end}}{{AppName}}</title>
<meta name="theme-color" content="{{ThemeColorMetaTag}}">
{{template "inject/head" .}}
</head>
<body>
<div class="full height">
<noscript>This website works better with JavaScript</noscript>
{{if not .PageIsInstall}}
<div class="following bar light">
<div class="ui container">
<div class="ui grid">
<div class="column">
<div class="ui top secondary menu">
<a class="item brand" href="{{AppSubURL}}/">
<img class="ui mini image" src="{{AppSubURL}}/img/favicon.png">
</a>
{{if .IsLogged}}
<a class="item{{if .PageIsDashboard}} active{{end}}" href="{{AppSubURL}}/">{{.i18n.Tr "dashboard"}}</a>
<a class="item{{if .PageIsIssues}} active{{end}}" href="{{AppSubURL}}/issues">{{.i18n.Tr "issues"}}</a>
<a class="item{{if .PageIsPulls}} active{{end}}" href="{{AppSubURL}}/pulls">{{.i18n.Tr "pull_requests"}}</a>
{{else}}
<a class="item{{if .PageIsHome}} active{{end}}" href="{{AppSubURL}}/">{{.i18n.Tr "home"}}</a>
{{end}}
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubURL}}/explore/repos">{{.i18n.Tr "explore"}}</a>
{{/*<div class="item">
<div class="ui icon input">
<input class="searchbox" type="text" placeholder="{{.i18n.Tr "search_project"}}">
<i class="search icon"></i>
</div>
</div>*/}}
{{if .IsLogged}}
<div class="right menu">
<div class="ui dropdown head link jump item poping up" data-content="{{.i18n.Tr "create_new"}}" data-variation="tiny inverted">
<span class="text">
<i class="octicon octicon-plus"><span class="sr-only">{{.i18n.Tr "create_new"}}</span></i>
<i class="octicon octicon-triangle-down"></i>
</span>
<div class="menu">
<a class="item" href="{{AppSubURL}}/repo/create">
<i class="octicon octicon-plus"></i> {{.i18n.Tr "new_repo"}}
</a>
<a class="item" href="{{AppSubURL}}/repo/migrate">
<i class="octicon octicon-repo-clone"></i> {{.i18n.Tr "new_migrate"}}
</a>
{{if .LoggedUser.CanCreateOrganization}}
<a class="item" href="{{AppSubURL}}/org/create">
<i class="octicon octicon-organization"></i> {{.i18n.Tr "new_org"}}
</a>
{{end}}
</div><!-- end content create new menu -->
</div><!-- end dropdown menu create new -->
<div class="ui dropdown head link jump item poping up" tabindex="-1" data-content="{{.i18n.Tr "user_profile_and_more"}}" data-variation="tiny inverted">
<span class="text avatar">
<img class="ui small rounded image" src="{{.LoggedUser.RelAvatarLink}}">
<span class="sr-only">{{.i18n.Tr "user_profile_and_more"}}</span>
<i class="octicon octicon-triangle-down" tabindex="-1"></i>
</span>
<div class="menu" tabindex="-1">
<div class="ui header">
{{.i18n.Tr "signed_in_as"}} <strong>{{.LoggedUser.Name}}</strong>
</div>
<div class="divider"></div>
<a class="item" href="{{AppSubURL}}/{{.LoggedUser.Name}}">
<i class="octicon octicon-person"></i> {{.i18n.Tr "your_profile"}}
</a>
<a class="{{if .PageIsUserSettings}}active{{end}} item" href="{{AppSubURL}}/user/settings">
<i class="octicon octicon-settings"></i> {{.i18n.Tr "your_settings"}}
</a>
<a class="item" target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs" rel="noreferrer">
<i class="octicon octicon-question"></i> {{.i18n.Tr "help"}}
</a>
{{if .IsAdmin}}
<div class="divider"></div>
<a class="{{if .PageIsAdmin}}active{{end}} item" href="{{AppSubURL}}/admin">
<i class="icon settings"></i> {{.i18n.Tr "admin_panel"}}
</a>
{{end}}
<div class="divider"></div>
<form id="logout-form" class="item" action="{{AppSubURL}}/user/logout" method="POST">
{{.CSRFTokenHTML}}
<div class="submit-button" data-form="#logout-form">
<i class="octicon octicon-sign-out"></i> {{.i18n.Tr "sign_out"}}
</div>
</form>
</div><!-- end content avatar menu -->
</div><!-- end dropdown avatar menu -->
</div><!-- end signed user right menu -->
{{else}}
<a class="item" target="_blank" rel="noopener noreferrer" href="https://gogs.io/docs" rel="noreferrer">{{.i18n.Tr "help"}}</a>
<div class="right menu">
{{if .ShowRegistrationButton}}
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubURL}}/user/sign_up">
<i class="octicon octicon-person"></i> {{.i18n.Tr "register"}}
</a>
{{end}}
<a class="item{{if .PageIsSignIn}} active{{end}}" href="{{AppSubURL}}/user/login?redirect_to={{.Link}}">
<i class="octicon octicon-sign-in"></i> {{.i18n.Tr "sign_in"}}
</a>
</div><!-- end anonymous right menu -->
{{end}}
</div><!-- end top menu -->
</div><!-- end column -->
</div><!-- end grid -->
</div><!-- end container -->
</div><!-- end bar -->
{{end}}
{{if .ServerNotice}}
<div class="ui container grid warning message">
<div class="content">
{{.ServerNotice | Str2HTML}}
</div>
</div>
{{end}}
{{/*
</div>
</body>
</html>
*/}}