Browse Source

feat: add the base custom html

master
colorfulberry 5 years ago
parent
commit
97eae8c450
32 changed files with 1848 additions and 3 deletions
  1. +1
    -0
      .bra.toml
  2. +3
    -3
      .gitignore
  3. +218
    -0
      custom/public/css/openi.css
  4. BIN
      custom/public/img/banner-qimen-4X3.jpg
  5. BIN
      custom/public/img/favicon.png
  6. +52
    -0
      custom/public/img/openi-logo-w.svg
  7. BIN
      custom/public/img/org_bg.png
  8. +16
    -0
      custom/public/js/jquery.particleground.min.js
  9. +42
    -0
      custom/templates/base/footer_content.tmpl
  10. +182
    -0
      custom/templates/base/head.tmpl
  11. +180
    -0
      custom/templates/base/head_navbar.tmpl
  12. +3
    -0
      custom/templates/custom/header.tmpl
  13. +41
    -0
      custom/templates/explore/navbar.tmpl
  14. +68
    -0
      custom/templates/explore/organizations.tmpl
  15. +75
    -0
      custom/templates/explore/repo_list.tmpl
  16. +1
    -0
      custom/templates/explore/repo_right.tmpl
  17. +17
    -0
      custom/templates/explore/repo_search.tmpl
  18. +20
    -0
      custom/templates/explore/repos.tmpl
  19. +13
    -0
      custom/templates/explore/search.tmpl
  20. +63
    -0
      custom/templates/explore/users.tmpl
  21. +254
    -0
      custom/templates/home.tmpl
  22. +27
    -0
      custom/templates/org/header.tmpl
  23. +87
    -0
      custom/templates/org/home.tmpl
  24. +75
    -0
      custom/templates/org/member/members.tmpl
  25. +33
    -0
      custom/templates/org/navber.tmpl
  26. +73
    -0
      custom/templates/org/repo_list.tmpl
  27. +48
    -0
      custom/templates/org/team/teams.tmpl
  28. +10
    -0
      custom/templates/user/auth/signin.tmpl
  29. +102
    -0
      custom/templates/user/auth/signin_inner.tmpl
  30. +85
    -0
      custom/templates/user/auth/signup_inner.tmpl
  31. +59
    -0
      custom/templates/user/dashboard/navbar.tmpl
  32. +0
    -0
      templates/explore/repo_right.tmpl

+ 1
- 0
.bra.toml View File

@@ -12,6 +12,7 @@ watch_dirs = [
"$WORKDIR/cmd",
"$WORKDIR/options",
"$WORKDIR/public",
"$WORKDIR/custom",
] # Directories to watch
watch_exts = [".go", ".ini", ".less"] # Extensions to watch
env_files = [] # Load env vars from files


+ 3
- 3
.gitignore View File

@@ -50,9 +50,9 @@ coverage.all

/bin
/dist
/custom/*
!/custom/conf
/custom/conf/*
!/custom/conf/public
!/custom/conf/templates
/custom/conf/app.ini
!/custom/conf/app.ini.sample
/data
/indexers


+ 218
- 0
custom/public/css/openi.css View File

@@ -0,0 +1,218 @@
.ui .text.yellow a {
color: #fbbd08!important
}
.ui .text.yellow a:hover {
color: #f2711c!important
}

.following.bar #navbar .brand{
padding-left: 0;
}
.following.bar .brand .ui.mini.image {
width: auto;
height: 30px;
}

.following.bar.dark {
background-color: #001F4A;
}
.ui.secondary.menu.dark .item{
color: #E5FAFF;
}
.ui.secondary.menu.dark .item:hover{
color: #40A9FF;
}
.ui.secondary.menu .active.item{
color: #40A9FF;
border-bottom: 1px solid #40A9FF;
border-radius: 0;
}

.repository:not(.new), .organization:not(.new), .explore, .dashboard {
padding-top: 0px;
}
.dashboard .dashboard-navbar, .organization .organization-header, .explore .repos--seach{
padding-top:15px;
padding-bottom: 15px;
padding-left: 0;
margin-bottom: 20px;
background-color:#f5f5f6 !important;
border-bottom: 1px solid rgba(34,36,38,.15);
}
.following.bar .text .svg.octicon-triangle-down {
color: #3291F8;
}
.ui .avatar.image {
border-radius: 30px;
}
footer {
background-color: #f5f5f6;
padding-bottom: 1.0rem;
}

.repository .header-wrapper {
background-color: #f5f5f6;
margin-top: 0px;
}

/*moble*/
.ui.menu:not(.vertical) .item>.button {
color: #FFF;
box-shadow: 0 0 0 1px rgba(255,255,255,.35) inset;
}
/*PC*/
@media only screen and (min-width: 1200px){
.following.bar #navbar{
min-height: 80px;
}
.following.bar #navbar, footer .container {
padding: 0 32px;
}
}

/*start page*/
.ui.header.section--header{
font-size: 50px;
font-weight: 300;
text-align: center;
margin-bottom: 1.0em;
}
.ui.header.section--header .sub.header {
font-size: 20px;
line-height: 30px;
color: #9b9b9b;
text-align: center;
color: rgba(255,255,255,.6);
}
.ui.inverted.segment>.ui.header.section--header .sub.header{
color: rgba(255,255,255,.6);
}

#index-project {
background: #002060;
color: #FFF;
position: relative;
padding-top: 3.0em;
padding-bottom:2.0em
}
#index-project .ui.inverted.segment, #index-project .ui.primary.inverted.segment{
background:none;
}
.prorow{
background: rgba(0,27,81,0.8);
}

.flip{
position:absolute;
left:6px;
right:6px;
top:6px;
bottom:6px;
border:2px solid #ffc000;
border-radius: 12px;
transition: transform 1s cubic-bezier(0.445, 0.05, 0.55, 0.95);
transform: perspective(800px) rotateY(0deg);
transform-style: preserve-3d;
z-index:5;
}
.flip-more{ border-color:#4472c4}
.flip-blue{ border-color:#00b0f0}
.flip-green{ border-color:#00b050}
#index-project .ipros:hover .flip{transform: perspective(800px) rotateY(180deg);}

#index-project .ui.card{
margin:0 auto;
background:none;
border:none;
box-shadow:none;
}
#index-project .ui.card>.image>img{
width:auto;
margin:10px auto;
}
#index-project .ui.card>.content, #index-project.ui.cards>.card>.content{
padding: 0.5em 0.2em;
}
.ui.inverted.segment .ui.card>.content>.header, .ui.inverted.segment .ui.cards>.card>.content>.header{
color: rgba(255,255,255,.9);
}
.ui.inverted.segment .ui.card .meta, .ui.inverted.segment .ui.cards>.card .meta{
color: #5b9bd5;
}
.ui.inverted.segment .ui.card>.extra, .ui.inverted.segment .ui.cards>.card>.extra {
color: rgba(255,255,255,.4);
}

#particles{ width: 100%; height:100%; position: absolute; top:0; left:0; right:0; bottom:0;}

footer .ui.vertical.text.menu:first-child{ margin-top: 1em}
footer .ui.vertical.menu .header.item{ background:none}
footer .column{margin-bottom:0!important; padding-bottom:0!important;}
/*explore*/
.explore .ui.secondary.vertical.pointing.menu,
.explore .ui.secondary.vertical.pointing.menu .item,
.organization .ui.secondary.vertical.pointing.menu,
.organization .ui.secondary.vertical.pointing.menu .item{
border-right-width: 0;
}
.explore .computer.only .ui.secondary.pointing.menu .item{
padding-left:0;
}
.ui.repository.list .item .ui.header .metas{
text-align: right;
}
@media only screen and (max-width:768px){
.explore .repos--seach{
margin-bottom:15px;
}
.explore .navbar{
padding-top: 0px!important;
margin-top: -1.5rem!important;
}
}
/*organization*/
.organization-info{
padding-top:15px;
margin-bottom:2.5rem;
}
.organization-info > .container{
overflow: auto;
background: url(/img/org_bg.png) no-repeat center center #f5f5f6;
padding-top: 30px;
padding-bottom:20px;
background-size: cover;
border-radius: 5px;
border: 1px solid #efefef;
}
.organization.profile #org-info .ui.header{
font-size: 1.71428571rem;
margin-bottom: 10px;
font-weight: 400;
}
.organization.profile #org-avatar {
width: 80px;
height: 80px;
margin-left: auto;
margin-right: auto;
margin-bottom: 15px;
border: solid 5px #FFF;
}
.organization.profile #org-info .desc {
font-size: 14px;
width: 80%;
margin: 0 auto 10px;
color: #FFF;
}
.organization.teams .ui.attached.segment+.ui.attached.header{ margin-top:0}
@media only screen and (max-width:768px){
.organization-info{
padding-top:0;
}
.organization-info > .container{
margin-left:0!important;
margin-right:0!important;
}
}
.ui.vertical.menu .dropdown.item .menu {
left: 50%;
}

BIN
custom/public/img/banner-qimen-4X3.jpg View File

Before After
Width: 483  |  Height: 319  |  Size: 14 kB

BIN
custom/public/img/favicon.png View File

Before After
Width: 104  |  Height: 104  |  Size: 3.2 kB

+ 52
- 0
custom/public/img/openi-logo-w.svg View File

@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 192.8 36.9" style="enable-background:new 0 0 192.8 36.9;" xml:space="preserve">
<style type="text/css">
.st0{fill:#036EFF;}
.st1{fill:#FFFFFF;}
</style>
<g>
<rect x="104.4" y="5.5" class="st0" width="12" height="25.8"/>
<g>
<path class="st0" d="M27.7,17.5c0,4.2-1,7.5-3.1,10c-2.3,2.9-5.5,4.3-9.7,4.3c-4.2,0-7.5-1.4-9.7-4.3c-2-2.5-3-5.9-3-10.1
c0-4.3,1-7.7,3-10.3c2.2-2.9,5.4-4.3,9.7-4.3c4.2,0,7.4,1.4,9.7,4.3C26.7,9.8,27.7,13.2,27.7,17.5z M24.2,17.5
c0-3.2-0.7-5.9-2.2-8C20.4,7.2,18,6,15,6c-3.1,0-5.5,1.2-7.1,3.5c-1.5,2.1-2.2,4.7-2.2,7.9c0,3.2,0.7,5.7,2.2,7.8
c1.7,2.3,4,3.5,7.1,3.5c3,0,5.4-1.1,7.1-3.4C23.5,23.2,24.2,20.6,24.2,17.5z"/>
<path class="st0" d="M49.8,21.6c0,2.7-0.9,5.1-2.6,7.1c-1.9,2.1-4.2,3.1-7,3.1c-1.1,0-2.2-0.3-3.4-0.9c-1.1-0.5-2-1.2-2.4-2.1v4.9
c0,1.2-0.5,1.8-1.6,1.8c-1,0-1.5-0.6-1.5-1.8V13.6c0-1.2,0.5-1.8,1.5-1.8c1.1,0,1.6,0.6,1.6,1.8v1.3c1.5-2.1,3.6-3.2,6.3-3.2
c2.7,0,4.9,1,6.6,2.9C49,16.6,49.8,18.9,49.8,21.6z M46.5,21.6c0-1.9-0.5-3.5-1.5-4.7c-1.1-1.3-2.5-2-4.3-2c-1.9,0-3.4,0.7-4.6,2
c-1.2,1.3-1.8,2.9-1.8,4.8c0,2,0.5,3.6,1.4,4.9c1.1,1.4,2.5,2.1,4.5,2.1c1.9,0,3.4-0.7,4.6-2.1C45.9,25.1,46.5,23.5,46.5,21.6z"/>
<path class="st0" d="M70.3,20.9c0,1.1-0.6,1.6-1.9,1.6H55.8c0.1,1.8,0.7,3.3,1.7,4.4c1.1,1.2,2.4,1.8,4.1,1.8
c1.3,0,2.5-0.4,3.4-1.2c0.5-0.5,1.2-1.4,1.9-2.6c0.3-0.5,0.7-0.8,1.4-0.8c0.4,0,0.8,0.2,1.1,0.6c0.3,0.3,0.5,0.8,0.5,1.2
c0,0.8-0.5,1.8-1.6,3.1c-1.6,1.9-3.8,2.8-6.7,2.8c-2.8,0-5.1-1-6.7-3.1c-1.5-1.9-2.3-4.3-2.3-7.2c0-2.6,0.9-4.9,2.6-6.9
c1.7-1.9,3.9-2.9,6.5-2.9c2.6,0,4.8,0.9,6.4,2.8C69.5,16.4,70.3,18.5,70.3,20.9z M67.1,19.6c0-1.1-0.5-2.2-1.6-3.4
c-0.9-0.9-2.2-1.4-4-1.4c-1.4,0-2.5,0.4-3.5,1.3c-1,0.9-1.7,2-2,3.4h10.9C67,19.6,67.1,19.6,67.1,19.6z"/>
<path class="st0" d="M91.2,30c0,1.2-0.5,1.8-1.5,1.8s-1.5-0.6-1.5-1.8V19.4c0-1.3-0.5-2.4-1.5-3.3c-1-0.9-2.2-1.3-3.5-1.3
c-1.8,0-3.4,0.6-4.7,1.8c-1.2,1.1-1.8,2.1-1.8,3.3V30c0,1.2-0.4,1.8-1.3,1.8c-1.2,0-1.8-0.6-1.8-1.8V13.6c0-1.2,0.5-1.8,1.5-1.8
c1,0,1.5,0.6,1.5,1.8v1.3c1.7-2.1,3.9-3.1,6.6-3.1c2.3,0,4.2,0.7,5.7,2.2c1.6,1.4,2.4,3.3,2.4,5.5V30z"/>
<path class="st1" d="M126.3,13.4v10.2c0,2.5-1.4,4.7-3.5,6l-8.9,5.1c-2.1,1.2-4.8,1.2-6.9-0.1l-8.8-5.2c-2.1-1.3-3.4-3.5-3.4-6
V13.2c0-2.5,1.3-4.7,3.4-6l8.8-5.1c2.1-1.2,4.8-1.2,6.9,0.1l8.9,5.2C125,8.7,126.3,11,126.3,13.4z M108.2,28.9
c0,1.3,1.1,2.4,2.4,2.4l0,0c1.3,0,2.4-1.1,2.4-2.4V8c0-1.3-1.1-2.4-2.4-2.4l0,0c-1.3,0-2.4,1.1-2.4,2.4V28.9z"/>
<g>
<path class="st0" d="M157.9,21.9h-13.1c-1.9,0.1-2.9,1-2.9,2.7v6c0.1,1.6,1.1,2.4,2.9,2.5h13c1.8-0.1,2.7-0.9,2.8-2.6v-5.9
C160.5,22.9,159.6,22,157.9,21.9z M157.4,29.5c-0.1,0.7-0.5,1.1-1.4,1.2h-9.6c-0.9-0.2-1.3-0.5-1.4-1.2v-3.9
c0.1-0.9,0.5-1.3,1.4-1.4h9.5c0.9,0.1,1.4,0.5,1.5,1.4V29.5z"/>
<path class="st0" d="M140.4,16.1v-0.3v-3.1c0.1-0.9,0.6-1.4,1.5-1.5h13.7c1-0.1,1.5,0.4,1.5,1.3v2.4c0,0.8-0.5,1.2-1.4,1.2h-14
v2.3h16c1.7,0,2.6-0.8,2.6-2.3v-4.6c0-1.7-0.9-2.6-2.6-2.6h-7V7h-3.3v1.9h-7.5c-1.9,0-2.8,0.9-2.8,2.8v8.9
c0,4.1-0.6,8.2-1.9,12.3l3.1,0.6c1.3-4.1,2-8.3,2-12.3v-1.7v-1.1V16.1z"/>
</g>
<g>
<path class="st0" d="M165.8,19.8l3.2,1.7c1.9-1.4,3.1-3.2,3.7-5.5h5.6v-2.3h-5.1c0.1-0.7,0.2-1.9,0.2-2.8h4.7V8.5h-8.8V7H166
l0,3.8h4.2c0,1.3-0.1,2.2-0.2,2.8h-4.8V16h4.2C169,17.4,167.3,19.3,165.8,19.8z"/>
<path class="st0" d="M173.2,17.1c0.9,1.6,1.5,2.4,2.1,4.2h3.5c-0.6-1.5-1.3-3-2.1-4.2H173.2z"/>
<path class="st0" d="M186.8,22H169c-1.7,0.2-2.7,1-2.8,2.5V29h3.2h0.9h16.3V30c0,0.8-0.5,1.2-1.5,1.2h-14.2
c-0.9,0-1.4-0.4-1.4-1.1h-3.2v1c0.2,1.5,1,2.3,2.5,2.5h18.1c1.9-0.1,2.9-0.9,2.9-2.5v-6.5C189.5,23.1,188.6,22.2,186.8,22z
M186.5,26.6h-17.1v-0.8c0.1-0.9,0.5-1.3,1.4-1.4H185c1,0,1.5,0.5,1.5,1.4V26.6z"/>
<path class="st0" d="M188.2,8h-5.9c-1.6,0.1-2.5,0.8-2.7,2.1v8.4c0.2,1.3,0.9,2,2.2,2.1h6.3c1.4-0.1,2.2-0.8,2.2-2.1v-8.4
C190.4,8.9,189.7,8.2,188.2,8z M187.2,16.8c0,1-0.5,1.5-1.4,1.5h-1.7c-0.9-0.1-1.3-0.6-1.3-1.5v-5c0.1-0.9,0.5-1.3,1.4-1.4h1.5
c0.9,0.1,1.4,0.5,1.5,1.4V16.8z"/>
</g>
</g>
</g>
</svg>

BIN
custom/public/img/org_bg.png View File

Before After
Width: 1200  |  Height: 800  |  Size: 89 kB

+ 16
- 0
custom/public/js/jquery.particleground.min.js
File diff suppressed because it is too large
View File


+ 42
- 0
custom/templates/base/footer_content.tmpl View File

@@ -0,0 +1,42 @@
<footer>
<div class="ui container">
<div class="ui grid">
<div class="sixteen wide mobile eight wide tablet eight wide computer column">
<div class="ui three column grid">
<div class="column ui vertical text menu">
<div class="header item">社区</div>
<a href="https://www.openi.org.cn/html/Club/2019/0227/14.html" class="item">理事会</a>
<a href="https://www.openi.org.cn/html/Club/2019/0227/14.html" class="item">技术委员会</a>
<a href="https://www.openi.org.cn/html/Club/2019/0228/17.html" class="item">加入OpenI</a>
</div>
<div class="column ui vertical text menu">
<div class="header item">动态</div>
<a href="https://www.openi.org.cn/html/news/dongtai/" class="item">社区动态</a>
<a href="https://www.openi.org.cn/html/news/huodong/" class="item">成员动态</a>
<a href="https://www.openi.org.cn/html/news/zixun/" class="item">行业资讯</a>
</div>
<div class="column ui vertical text menu">
<div class="header item">帮助</div>
<a href="https://docs.gitea.io/zh-cn/" class="item">帮助文档</a>
<div class="ui language bottom floating slide up dropdown link item">
<i class="world icon"></i>
<div class="text">{{.LangName}}</div>
<div class="menu">
{{range .AllLangs}}
<a lang="{{.Lang}}" class="item {{if eq $.Lang .Lang}}active selected{{end}}" href="{{if eq $.Lang .Lang}}#{{else}}{{$.Link}}?lang={{.Lang}}{{end}}">{{.Name}}</a>
{{end}}
</div>
</div>
{{template "custom/extra_links_footer" .}}
</div>
</div>
</div>
<div class="sixteen wide mobile eight wide tablet eight wide computer column" style=" margin:2.0rem 0">
版权所有:新一代人工智能开源开放平台(OpenI) <a href="http://www.miitbeian.gov.cn/" target="_blank">京ICP备18004880号</a>
<br>
{{.i18n.Tr "powered_by" "鹏城实验室云脑、Trustie、华为云 DevCloud、gitea"}} 构建
<br>
</div>
</div>
</div>
</footer>

+ 182
- 0
custom/templates/base/head.tmpl View File

@@ -0,0 +1,182 @@
<!DOCTYPE html>
<html lang="{{.Language}}">
<head data-suburl="{{AppSubUrl}}">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>{{if .Title}}{{.Title}} - {{end}} {{if .Repository.Name}}{{.Repository.Name}} - {{end}}{{AppName}}</title>
<link rel="manifest" href="{{AppSubUrl}}/manifest.json" crossorigin="use-credentials">
{{if UseServiceWorker}}
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('{{AppSubUrl}}/serviceworker.js').then(function(registration) {
// Registration was successful
console.info('ServiceWorker registration successful with scope: ', registration.scope);
}, function(err) {
// registration failed :(
console.info('ServiceWorker registration failed: ', err);
});
}
</script>
{{else}}
<script>
if ('serviceWorker' in navigator) {
navigator.serviceWorker.getRegistrations().then(function(registrations) {
registrations.forEach(function(registration) {
registration.unregister();
console.info('ServiceWorker unregistered');
});
});
}
</script>
{{end}}
<meta name="theme-color" content="{{ThemeColorMetaTag}}">
<meta name="author" content="{{if .Repository}}{{.Owner.Name}}{{else}}{{MetaAuthor}}{{end}}" />
<meta name="description" content="{{if .Repository}}{{.Repository.Name}}{{if .Repository.Description}} - {{.Repository.Description}}{{end}}{{else}}{{MetaDescription}}{{end}}" />
<meta name="keywords" content="{{MetaKeywords}}">
<meta name="referrer" content="no-referrer" />
<meta name="_csrf" content="{{.CsrfToken}}" />
{{if .IsSigned}}
<meta name="_uid" content="{{.SignedUser.ID}}" />
{{end}}
{{if .ContextUser}}
<meta name="_context_uid" content="{{.ContextUser.ID}}" />
{{end}}
{{if .SearchLimit}}
<meta name="_search_limit" content="{{.SearchLimit}}" />
{{end}}
{{if .GoGetImport}}
<meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}">
<meta name="go-source" content="{{.GoGetImport}} _ {{.GoDocDirectory}} {{.GoDocFile}}">
{{end}}
<script>
{{SafeJS `/*
@licstart The following is the entire license notice for the
JavaScript code in this page.

Copyright (c) 2016 The Gitea Authors
Copyright (c) 2015 The Gogs Authors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
---
Licensing information for additional javascript libraries can be found at:
{{StaticUrlPrefix}}/vendor/librejs.html

@licend The above is the entire license notice
for the JavaScript code in this page.
*/`}}
</script>
<script>
window.config = {
AppSubUrl: '{{AppSubUrl}}',
StaticUrlPrefix: '{{StaticUrlPrefix}}',
csrf: '{{.CsrfToken}}',
HighlightJS: {{if .RequireHighlightJS}}true{{else}}false{{end}},
Minicolors: {{if .RequireMinicolors}}true{{else}}false{{end}},
SimpleMDE: {{if .RequireSimpleMDE}}true{{else}}false{{end}},
Tribute: {{if .RequireTribute}}true{{else}}false{{end}},
U2F: {{if .RequireU2F}}true{{else}}false{{end}},
Heatmap: {{if .EnableHeatmap}}true{{else}}false{{end}},
heatmapUser: {{if .HeatmapUser}}'{{.HeatmapUser}}'{{else}}null{{end}},
};
</script>
<link rel="shortcut icon" href="{{StaticUrlPrefix}}/img/favicon.png">
<link rel="mask-icon" href="{{StaticUrlPrefix}}/img/gitea-safari.svg" color="#609926">
<link rel="fluid-icon" href="{{StaticUrlPrefix}}/img/gitea-lg.png" title="{{AppName}}">
<link rel="stylesheet" href="{{StaticUrlPrefix}}/vendor/assets/font-awesome/css/font-awesome.min.css">
<link rel="preload" as="font" href="{{StaticUrlPrefix}}/fomantic/themes/default/assets/fonts/icons.woff2" type="font/woff2" crossorigin="anonymous">
<link rel="preload" as="font" href="{{StaticUrlPrefix}}/fomantic/themes/default/assets/fonts/outline-icons.woff2" type="font/woff2" crossorigin="anonymous">
{{if .RequireSimpleMDE}}
<link rel="stylesheet" href="{{StaticUrlPrefix}}/vendor/plugins/simplemde/simplemde.min.css">
{{end}}

{{if .RequireTribute}}
<link rel="stylesheet" href="{{StaticUrlPrefix}}/vendor/plugins/tribute/tribute.css">
{{end}}
<link rel="stylesheet" href="{{StaticUrlPrefix}}/fomantic/semantic.min.css?v={{MD5 AppVer}}">
<link rel="stylesheet" href="{{StaticUrlPrefix}}/css/index.css?v={{MD5 AppVer}}">
<noscript>
<style>
.dropdown:hover > .menu { display: block; }
.ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
</style>
</noscript>
{{if .RequireMinicolors}}
<link rel="stylesheet" href="{{StaticUrlPrefix}}/vendor/plugins/jquery.minicolors/jquery.minicolors.css">
{{end}}
<style class="list-search-style"></style>
{{if .PageIsUserProfile}}
<meta property="og:title" content="{{.Owner.Name}}" />
<meta property="og:type" content="profile" />
<meta property="og:image" content="{{.Owner.AvatarLink}}" />
<meta property="og:url" content="{{.Owner.HTMLURL}}" />
{{if .Owner.Description}}
<meta property="og:description" content="{{.Owner.Description}}">
{{end}}
{{else if .Repository}}
{{if .Issue}}
<meta property="og:title" content="{{.Issue.Title}}" />
<meta property="og:url" content="{{.Issue.HTMLURL}}" />
{{if .Issue.Content}}
<meta property="og:description" content="{{.Issue.Content}}" />
{{end}}
{{else}}
<meta property="og:title" content="{{.Repository.Name}}" />
<meta property="og:url" content="{{.Repository.HTMLURL}}" />
{{if .Repository.Description}}
<meta property="og:description" content="{{.Repository.Description}}" />
{{end}}
{{end}}
<meta property="og:type" content="object" />
<meta property="og:image" content="{{.Repository.Owner.AvatarLink}}" />
{{else}}
<meta property="og:title" content="{{AppName}}">
<meta property="og:type" content="website" />
<meta property="og:image" content="{{StaticUrlPrefix}}/img/gitea-lg.png" />
<meta property="og:url" content="{{AppUrl}}" />
<meta property="og:description" content="{{MetaDescription}}">
{{end}}
<meta property="og:site_name" content="{{AppName}}" />
{{if .IsSigned }}
{{ if ne .SignedUser.Theme "gitea" }}
<link rel="stylesheet" href="{{StaticUrlPrefix}}/css/theme-{{.SignedUser.Theme}}.css?v={{MD5 AppVer}}">
{{end}}
{{else if ne DefaultTheme "gitea"}}
<link rel="stylesheet" href="{{StaticUrlPrefix}}/css/theme-{{DefaultTheme}}.css?v={{MD5 AppVer}}">
{{end}}
{{template "custom/header" .}}
</head>
<body>
{{template "custom/body_outer_pre" .}}

<div class="full height">
<noscript>{{.i18n.Tr "enable_javascript"}}</noscript>

{{template "custom/body_inner_pre" .}}

{{if not .PageIsInstall}}
<div class="ui top secondary stackable main menu following bar dark">
{{template "base/head_navbar" .}}
</div><!-- end bar -->
{{end}}
{{/*
</div>
</body>
</html>
*/}}

+ 180
- 0
custom/templates/base/head_navbar.tmpl View File

@@ -0,0 +1,180 @@
<div class="ui container" id="navbar">
<div class="item brand" style="justify-content: space-between;">
<a href="https://www.openi.org.cn/">
<img class="ui mini image" src="{{StaticUrlPrefix}}/img/openi-logo-w.svg?v=2020041802">
</a>
<div class="ui basic icon button mobile-only" id="navbar-expand-toggle">
<i class="sidebar icon"></i>
</div>
</div>

{{if .IsSigned}}
<a class="item {{if .PageIsDashboard}}active{{end}}" href="/">{{.i18n.Tr "dashboard"}}</a>
<div class="ui dropdown item">
社区
<i class="dropdown icon"></i>
<div class="menu">
<a class="item" href="https://www.openi.org.cn/html/Club/2019/0228/17.html">欢迎加入OpenI</a>
<a class="item" href="https://www.openi.org.cn/html/Club/2019/0227/14.html">组织结构</a>
<a class="item" href="https://www.openi.org.cn/html/Club/2019/0227/15.html">启智开源许可证</a>
<a class="item" href="https://www.openi.org.cn/html/Club/2019/0227/16.html">OpenI社区章程</a>
<a class="item" href="https://www.openi.org.cn/html/news/dongtai/">社区动态</a>
</div>
</div>
<a class="item" href="{{AppSubUrl}}/datasets">{{.i18n.Tr "datasets"}}</a>
<a class="item" href="{{AppSubUrl}}/explore/repos">项目</a>
{{if not .UnitIssuesGlobalDisabled}}
<a class="item {{if .PageIsIssues}}active{{end}}" href="{{AppSubUrl}}/issues">{{.i18n.Tr "issues"}}</a>
{{end}}
{{if not .UnitPullsGlobalDisabled}}
<a class="item {{if .PageIsPulls}}active{{end}}" href="{{AppSubUrl}}/pulls">{{.i18n.Tr "pull_requests"}}</a>
{{end}}
{{if not (and .UnitIssuesGlobalDisabled .UnitPullsGlobalDisabled)}}
{{if .ShowMilestonesDashboardPage}}<a class="item {{if .PageIsMilestonesDashboard}}active{{end}}" href="{{AppSubUrl}}/milestones">{{.i18n.Tr "milestones"}}</a>{{end}}
{{end}}
<div class="ui dropdown item">
{{.i18n.Tr "explore"}}
<i class="dropdown icon"></i>
<div class="menu">
<a class="item" href="javascript:alert('WIP')">学习</a>
<a class="item" href="javascript:alert('WIP')">活动</a>
</div>
</div>
{{else if .IsLandingPageHome}}
<a class="item {{if .PageIsHome}}active{{end}}" href="/">{{.i18n.Tr "home"}}</a>
<div class="ui dropdown item">
社区
<i class="dropdown icon"></i>
<div class="menu">
<a class="item" href="https://www.openi.org.cn/html/Club/2019/0228/17.html">欢迎加入OpenI</a>
<a class="item" href="https://www.openi.org.cn/html/Club/2019/0227/14.html">组织结构</a>
<a class="item" href="https://www.openi.org.cn/html/Club/2019/0227/15.html">启智开源许可证</a>
<a class="item" href="https://www.openi.org.cn/html/Club/2019/0227/16.html">OpenI社区章程</a>
<a class="item" href="https://www.openi.org.cn/html/news/dongtai/">社区动态</a>
</div>
</div>
<a class="item" href="{{AppSubUrl}}/explore/repos">项目</a>
<div class="ui dropdown item">
{{.i18n.Tr "explore"}}
<i class="dropdown icon"></i>
<div class="menu">
<a class="item {{if .PageIsExplore}}active{{end}}" href="{{AppSubUrl}}/explore/repos">更多开源项目</a>
<a class="item" href="https://openi.org.cn/welcome/shixuns" target="_blank">学习</a>
<a class="item" href="http://club.openi.org.cn/portal.php?mod=list&amp;catid=4" target="_blank">活动</a>
</div>
</div>
{{else if .IsLandingPageExplore}}
<a class="item {{if .PageIsExplore}}active{{end}}" href="{{AppSubUrl}}/explore/repos">{{.i18n.Tr "home"}}</a>
{{else if .IsLandingPageOrganizations}}
<a class="item {{if .PageIsExplore}}active{{end}}" href="{{AppSubUrl}}/explore/organizations">{{.i18n.Tr "home"}}</a>
{{end}}

{{template "custom/extra_links" .}}

{{/*
<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 .IsSigned}}
<div class="right stackable menu">
<a href="{{AppSubUrl}}/notifications" class="item poping up" data-content='{{.i18n.Tr "notifications"}}' data-variation="tiny inverted">
<span class="text">
<span class="fitted">{{svg "octicon-bell" 16}}</span>
<span class="sr-mobile-only">{{.i18n.Tr "notifications"}}</span>
{{$notificationUnreadCount := 0}}
{{if .NotificationUnreadCount}}{{$notificationUnreadCount = call .NotificationUnreadCount}}{{end}}
<span class="ui red label {{if not $notificationUnreadCount}}hidden{{end}} notification_count">
{{$notificationUnreadCount}}
</span>
</span>
</a>

<div class="ui dropdown jump item poping up" data-content="{{.i18n.Tr "create_new"}}" data-variation="tiny inverted">
<span class="text">
<span class="fitted">{{svg "octicon-plus" 16}}</span>
<span class="sr-mobile-only">{{.i18n.Tr "create_new"}}</span>
<span class="fitted not-mobile">{{svg "octicon-triangle-down" 16}}</span>
</span>
<div class="menu">
<a class="item" href="{{AppSubUrl}}/repo/create">
<span class="fitted">{{svg "octicon-plus" 16}}</span> {{.i18n.Tr "new_repo"}}
</a>
<a class="item" href="{{AppSubUrl}}/repo/migrate">
<span class="fitted">{{svg "octicon-repo-clone" 16}}</span> {{.i18n.Tr "new_migrate"}}
</a>
{{if .SignedUser.CanCreateOrganization}}
<a class="item" href="{{AppSubUrl}}/org/create">
<span class="fitted">{{svg "octicon-organization" 16}}</span> {{.i18n.Tr "new_org"}}
</a>
{{end}}
</div><!-- end content create new menu -->
</div><!-- end dropdown menu create new -->

<div class="ui dropdown jump item poping up" tabindex="-1" data-content="{{.i18n.Tr "user_profile_and_more"}}" data-variation="tiny inverted">
<span class="text">
<img class="ui tiny avatar image" width="24" height="24" src="{{.SignedUser.RelAvatarLink}}">
<span class="sr-only">{{.i18n.Tr "user_profile_and_more"}}</span>
<span class="mobile-only">{{.SignedUser.Name}}</span>
<span class="fitted not-mobile" tabindex="-1">{{svg "octicon-triangle-down" 16}}</span>
</span>
<div class="menu user-menu" tabindex="-1">
<div class="ui header">
{{.i18n.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
</div>

<div class="divider"></div>
<a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}">
{{svg "octicon-person" 16}}
{{.i18n.Tr "your_profile"}}<!-- Your profile -->
</a>
<a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}?tab=stars">
{{svg "octicon-star" 16}}
{{.i18n.Tr "your_starred"}}
</a>
<a class="{{if .PageIsUserSettings}}active{{end}} item" href="{{AppSubUrl}}/user/settings">
{{svg "octicon-settings" 16}}
{{.i18n.Tr "your_settings"}}<!-- Your settings -->
</a>
<!--a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io">
{{svg "octicon-question" 16}}
{{.i18n.Tr "help"}}<!-- 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"}}<!-- Admin Panel -->
</a>
{{end}}

<div class="divider"></div>
<a class="item link-action" href data-url="{{AppSubUrl}}/user/logout" data-redirect="{{AppSubUrl}}/">
{{svg "octicon-sign-out" 16}}
{{.i18n.Tr "sign_out"}}<!-- Sign Out -->
</a>
</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://docs.gitea.io">{{.i18n.Tr "help"}}</a-->
<div class="right stackable menu">
{{if .ShowRegistrationButton}}
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up">
{{svg "octicon-person" 16}} {{.i18n.Tr "register"}}
</a>
{{end}}
<a class="item{{if .PageIsSignIn}} active{{end}}" rel="nofollow" href="{{AppSubUrl}}/user/login?redirect_to={{.Link}}">
{{svg "octicon-sign-in" 16}} {{.i18n.Tr "sign_in"}}
</a>
</div><!-- end anonymous right menu -->

{{end}}
</div>

+ 3
- 0
custom/templates/custom/header.tmpl View File

@@ -0,0 +1,3 @@
<!--新增OpenI样式文件-->
<link rel="stylesheet" href="/css/openi.css?v={{MD5 AppVer}}">
<script type="text/javascript" src="/js/jquery.particleground.min.js"></script>

+ 41
- 0
custom/templates/explore/navbar.tmpl View File

@@ -0,0 +1,41 @@
<div class="tablet only mobile only sixteen wide mobile sixteen wide tablet column row">
<div class="ui secondary pointing tabular top attached borderless menu navbar">
<a class="{{if .PageIsExploreRepositories}}active{{end}} item" href="{{AppSubUrl}}/explore/repos">
{{svg "octicon-repo" 16}} {{.i18n.Tr "explore.repos"}}
</a>
<a class="{{if .PageIsExploreUsers}}active{{end}} item" href="{{AppSubUrl}}/explore/users">
{{svg "octicon-person" 16}} {{.i18n.Tr "explore.users"}}
</a>
<a class="{{if .PageIsExploreOrganizations}}active{{end}} item" href="{{AppSubUrl}}/explore/organizations">
{{svg "octicon-organization" 16}} {{.i18n.Tr "explore.organizations"}}
</a>
{{if .IsRepoIndexerEnabled}}
<a class="{{if .PageIsExploreCode}}active{{end}} item" href="{{AppSubUrl}}/explore/code">
{{svg "octicon-code" 16}} {{.i18n.Tr "explore.code"}}
</a>
{{end}}
</div>
</div>
<!--平板、移动端-->
<div class="computer only two wide computer column">
<div class="ui grid">
<div class="sixteen wide column ui secondary sticky pointing tabular vertical menu">
<a class="{{if .PageIsExploreRepositories}}active{{end}} item" href="{{AppSubUrl}}/explore/repos">
{{svg "octicon-repo" 16}} {{.i18n.Tr "explore.repos"}}
</a>
<a class="{{if .PageIsExploreUsers}}active{{end}} item" href="{{AppSubUrl}}/explore/users">
{{svg "octicon-person" 16}} {{.i18n.Tr "explore.users"}}
</a>
<a class="{{if .PageIsExploreOrganizations}}active{{end}} item" href="{{AppSubUrl}}/explore/organizations">
{{svg "octicon-organization" 16}} {{.i18n.Tr "explore.organizations"}}
</a>
{{if .IsRepoIndexerEnabled}}
<a class="{{if .PageIsExploreCode}}active{{end}} item" href="{{AppSubUrl}}/explore/code">
{{svg "octicon-code" 16}} {{.i18n.Tr "explore.code"}}
</a>
{{end}}
</div>
</div>
</div>
<!--电脑、宽屏-->

+ 68
- 0
custom/templates/explore/organizations.tmpl View File

@@ -0,0 +1,68 @@
{{template "base/head" .}}
<div class="explore users">
{{template "explore/search" .}}
<div class="ui container">
<div class="ui grid">
{{template "explore/navbar" .}}
<div class="sixteen wide mobile ten wide tablet ten wide computer column">
<h2 class="ui left floated medium header">
{{.i18n.Tr "explore.organizations"}}
</h2>
<div class="ui right floated secondary filter menu">
<!-- Sort -->
<div class="ui right dropdown type jump item">
<span class="text">
{{.i18n.Tr "repo.issues.filter_sort"}}
<i class="dropdown icon"></i>
</span>
<div class="menu">
<a class="{{if eq .SortType "newest"}}active{{end}} item" href="{{$.Link}}?sort=newest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.latest"}}</a>
<a class="{{if eq .SortType "oldest"}}active{{end}} item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a>
<a class="{{if eq .SortType "alphabetically"}}active{{end}} item" href="{{$.Link}}?sort=alphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.alphabetically"}}</a>
<a class="{{if eq .SortType "reversealphabetically"}}active{{end}} item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a>
<a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a>
<a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a>
</div>
</div>
</div>
<div class="ui clearing divider"></div>
<div class="ui user list">
{{range .Users}}
<div class="item">
<img class="ui avatar image" src="{{.RelAvatarLink}}">
<div class="content">
<span class="header">
<a href="{{.HomeLink}}">{{.Name}}</a> {{.FullName}}
{{if .Visibility.IsPrivate}}
<span class="text gold">{{svg "octicon-lock" 16}}</span>
{{end}}
</span>
<div class="description">
{{if .Location}}
{{svg "octicon-location" 16}} {{.Location}}
{{end}}
{{if and .Website}}
{{svg "octicon-link" 16}}
<a href="{{.Website}}" rel="nofollow">{{.Website}}</a>
{{end}}
{{svg "octicon-clock" 16}} {{$.i18n.Tr "user.join_on"}} {{.CreatedUnix.FormatShort}}
</div>
</div>
</div>
{{else}}
<div>{{$.i18n.Tr "explore.org_no_results"}}</div>
{{end}}
</div>

{{template "base/paginate" .}}
</div>
<div class="sixteen wide mobile six wide tablet four wide computer column">
{{template "explore/repo_right" .}}
</div>
</div>
</div>
</div>
{{template "base/footer" .}}

+ 75
- 0
custom/templates/explore/repo_list.tmpl View File

@@ -0,0 +1,75 @@
<h2 class="ui left floated medium header">
{{.i18n.Tr "explore.repos"}}
</h2>
<div class="ui right floated secondary filter menu">
<!-- Sort -->
<div class="ui right dropdown type jump item">
<span class="text">
{{.i18n.Tr "repo.issues.filter_sort"}}
<i class="dropdown icon"></i>
</span>
<div class="menu">
<a class="{{if eq .SortType "newest"}}active{{end}} item" href="{{$.Link}}?sort=newest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.latest"}}</a>
<a class="{{if eq .SortType "oldest"}}active{{end}} item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a>
<a class="{{if eq .SortType "alphabetically"}}active{{end}} item" href="{{$.Link}}?sort=alphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.alphabetically"}}</a>
<a class="{{if eq .SortType "reversealphabetically"}}active{{end}} item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a>
<a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a>
<a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a>
<a class="{{if eq .SortType "moststars"}}active{{end}} item" href="{{$.Link}}?sort=moststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.moststars"}}</a>
<a class="{{if eq .SortType "feweststars"}}active{{end}} item" href="{{$.Link}}?sort=feweststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.feweststars"}}</a>
<a class="{{if eq .SortType "mostforks"}}active{{end}} item" href="{{$.Link}}?sort=mostforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.mostforks"}}</a>
<a class="{{if eq .SortType "fewestforks"}}active{{end}} item" href="{{$.Link}}?sort=fewestforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.fewestforks"}}</a>
</div>
</div>
</div>

<div class="ui clearing divider"></div>

<div class="ui repository list">
{{range .Repos}}
<div class="item">
<div class="ui header">
{{if .RelAvatarLink}}
<img class="ui avatar image" src="{{.RelAvatarLink}}">
{{end}}
<a class="name" href="{{.Link}}">
{{if or $.PageIsExplore $.PageIsProfileStarList }}{{if .Owner}}{{.Owner.Name}} / {{end}}{{end}}{{.Name}}
{{if .IsArchived}}<i class="archive icon archived-icon"></i>{{end}}
</a>
{{if .IsPrivate}}
<span class="middle text gold">{{svg "octicon-lock" 16}}</span>
{{else if .IsFork}}
<span class="middle">{{svg "octicon-repo-forked" 16}}</span>
{{else if .IsMirror}}
<span class="middle">{{svg "octicon-repo-clone" 16}}</span>
{{else if .Owner}}
{{if .Owner.Visibility.IsPrivate}}
<span class="text gold">{{svg "octicon-lock" 16}}</span>
{{end}}
{{end}}
<div class="ui right metas">
{{if .PrimaryLanguage }}
<span class="text grey"><i class="color-icon" style="background-color: {{.PrimaryLanguage.Color}}"></i>{{ .PrimaryLanguage.Language }}</span>
{{end}}
<span class="text grey">{{svg "octicon-star" 16}} {{.NumStars}}</span>
<span class="text grey">{{svg "octicon-git-branch" 16}} {{.NumForks}}</span>
</div>
</div>
<div class="description">
{{if .DescriptionHTML}}<p class="has-emoji">{{.DescriptionHTML}}</p>{{end}}
{{if .Topics }}
<div class="ui tags">
{{range .Topics}}
{{if ne . "" }}<a href="{{AppSubUrl}}/explore/repos?q={{.}}&topic=1"><div class="ui small label topic">{{.}}</div></a>{{end}}
{{end}}
</div>
{{end}}
<p class="time">{{$.i18n.Tr "org.repo_updated"}} {{TimeSinceUnix .UpdatedUnix $.i18n.Lang}}</p>
</div>
</div>
{{else}}
<div>
{{$.i18n.Tr "explore.repo_no_results"}}
</div>
{{end}}
</div>

+ 1
- 0
custom/templates/explore/repo_right.tmpl View File

@@ -0,0 +1 @@
<img class="ui mini image" src="/img/banner-qimen-4X3.jpg" style="width:100%;">

+ 17
- 0
custom/templates/explore/repo_search.tmpl View File

@@ -0,0 +1,17 @@
<div class="repos--seach">
<div class="ui container">
<div class="ui two column centered grid">
<form class="sixteen wide mobile eight wide tablet eight wide computer column ui form ignore-dirty">
<div class="ui fluid action input">
<input name="q" value="{{.Keyword}}" placeholder="{{.i18n.Tr "explore.search"}}..." autofocus>
<input type="hidden" name="tab" value="{{$.TabName}}">
<input type="hidden" name="sort" value="{{$.SortType}}">
<button class="ui blue button">{{.i18n.Tr "explore.search"}}</button>
</div>
</form>
<div class="tablet only computer only eight wide tablet eight wide computer column" style="line-height: 2.5rem;">
热搜:
</div>
</div>
</div>
</div>

+ 20
- 0
custom/templates/explore/repos.tmpl View File

@@ -0,0 +1,20 @@
{{template "base/head" .}}
<div class="explore repositories">

{{template "explore/repo_search" .}}

<div class="ui container">
<div class="ui grid">
{{template "explore/navbar" .}}
<div class="ui sixteen wide mobile ten wide tablet ten wide computer column">
{{template "explore/repo_list" .}}
{{template "base/paginate" .}}
</div>
<div class="ui sixteen wide mobile six wide tablet four wide computer column">
{{template "explore/repo_right" .}}
</div>
</div>
</div>
</div>
{{template "base/footer" .}}

+ 13
- 0
custom/templates/explore/search.tmpl View File

@@ -0,0 +1,13 @@
<div class="repos--seach">
<div class="ui container">
<div class="ui two column centered grid">
<form class="sixteen wide mobile eight fourteen tablet fourteen wide computer column ui form ignore-dirty">
<div class="ui fluid action input">
<input name="q" value="{{.Keyword}}" placeholder="{{.i18n.Tr "explore.search"}}..." autofocus>
<input type="hidden" name="tab" value="{{$.TabName}}">
<button class="ui blue button">{{.i18n.Tr "explore.search"}}</button>
</div>
</form>
</div>
</div>
</div>

+ 63
- 0
custom/templates/explore/users.tmpl View File

@@ -0,0 +1,63 @@
{{template "base/head" .}}
<div class="explore users">
{{template "explore/search" .}}
<div class="ui container">
<div class="ui grid">
{{template "explore/navbar" .}}
<div class="sixteen wide mobile ten wide tablet ten wide computer column">
<h2 class="ui left floated medium header">
{{.i18n.Tr "explore.users"}}
</h2>
<div class="ui right floated secondary filter menu">
<!-- Sort -->
<div class="ui right dropdown type jump item">
<span class="text">
{{.i18n.Tr "repo.issues.filter_sort"}}
<i class="dropdown icon"></i>
</span>
<div class="menu">
<a class="{{if eq .SortType "newest"}}active{{end}} item" href="{{$.Link}}?sort=newest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.latest"}}</a>
<a class="{{if eq .SortType "oldest"}}active{{end}} item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a>
<a class="{{if eq .SortType "alphabetically"}}active{{end}} item" href="{{$.Link}}?sort=alphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.alphabetically"}}</a>
<a class="{{if eq .SortType "reversealphabetically"}}active{{end}} item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a>
<a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a>
<a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a>
</div>
</div>
</div>
<div class="ui clearing divider"></div>
<div class="ui user list">
{{range .Users}}
<div class="item">
<img class="ui avatar image" src="{{.RelAvatarLink}}">
<div class="content">
<span class="header"><a href="{{.HomeLink}}">{{.Name}}</a> {{.FullName}}</span>
<div class="description">
{{if .Location}}
{{svg "octicon-location" 16}} {{.Location}}
{{end}}
{{if and $.ShowUserEmail .Email $.IsSigned (not .KeepEmailPrivate)}}
{{svg "octicon-mail" 16}}
<a href="mailto:{{.Email}}" rel="nofollow">{{.Email}}</a>
{{end}}
{{svg "octicon-clock" 16}} {{$.i18n.Tr "user.join_on"}} {{.CreatedUnix.FormatShort}}
</div>
</div>
</div>
{{else}}
<div>{{$.i18n.Tr "explore.user_no_results"}}</div>
{{end}}
</div>
{{template "base/paginate" .}}
</div>
<div class="sixteen wide mobile six wide tablet four wide computer column">
{{template "explore/repo_right" .}}
</div>
</div>
</div>
</div>
{{template "base/footer" .}}

+ 254
- 0
custom/templates/home.tmpl View File

@@ -0,0 +1,254 @@
{{template "base/head" .}}
<div class="home">
<script>
document.addEventListener('DOMContentLoaded', function () {
particleground(document.getElementById('particles'), {
dotColor: 'rgba(0,176,240,0.2)',
lineColor: 'rgba(68,114,196,0.1)'
});
var intro = document.getElementById('intro');
intro.style.marginTop = - intro.offsetHeight / 2 + 'px';
}, false);
</script>
<div id="index-project">
<div id="particles"></div>
<div class="center aligned ui container inverted segment"><!--内容宽度,默认1127px-->
<h1 class="ui header section--header">启智社区
<p class="sub header">Open Intelligence,Open Source,Open Community,Open Ecosystem</p>
</h1>
<div class="ui six column grid prorow">
<div class="eight wide mobile four wide tablet four wide computer column ipros">
<div class="ui card">
<div class="image"><img src="http://www.openi.org.cn/statics/openi/images/index/openi-paddle.png" style=" height:20px;"></div>
<div class="content ui grid">
<div class="header right aligned eight wide column" style=" border-right:2px solid #ffc000">
<span style="color: #5170ff;">OpenI</span> <b style="color:#FFF">DL</b>
</div>
<div class="header left aligned eight wide column">
<span style="color: #5170ff;">OpenI</span> <b style="color:#ffc000">RL</b>
</div>
</div>
<div class="extra content">
<div class="center floated author">
贡献者:百度
</div>
</div>
</div>
<a class="flip" href="http://www.openi.org.cn/html/2020/Framework_0325/12.html"></a>
</div>
<div class="eight wide mobile three wide tablet three wide computer column ipros">
<div class="ui card">
<div class="image">
<img src="http://www.openi.org.cn/statics/openi/images/index/openi-tianyuan.png" alt="Brain++·天元" style=" height:50px;">
</div>
<div class="content">
<div class="header">Brain++·天元</div>
</div>
<div class="extra content">
<div class="center floated author">
贡献者:旷视
</div>
</div>
</div>
<a class="flip" href="/html/2020/Framework_0325/18.html"></a>
</div>
<div class="eight wide mobile four wide tablet four wide computer column ipros">
<div class="ui card">
<div class="content ui grid">
<div class="header eight wide column" style=" border-right:2px solid #ffc000">
<div><span style="color: #5170ff;">OpenI</span> <b style="color:#FFF">天璇</b></div>
</div>
<div class="header eight wide column">
<div><span style="color: #5170ff;">OpenI</span> <b style="color:#FFF">天枢</b></div>
</div>
<div class="eight wide column" style=" border-right:2px solid #ffc000; padding-top:0">
<div class="meta">AVS3 解码</div>
</div>
<div class="eight wide column" style="padding-top:0">
<div class="meta">AVS3 编码</div>
</div>
</div>
<div class="extra content">
<div class="center floated author">
贡献者:北大深研院、鹏城实验室、深圳市超高清创新中心
</div>
</div>
</div>
<a class="flip" style="border-style:dashed;"></a>
</div>
<div class="eight wide mobile three wide tablet three wide computer column ipros">
<div class="ui card">
<div class="content">
<div class="header" style=" padding-top:0.8em;padding-bottom:0.5em"><span style="color: #5170ff;">OpenI</span> <b style="color:#FFF">海参</b></div>
<div class="meta">基于深度学习的视频智能编码</div>
</div>
<div class="extra content">
<div class="center floated author">
贡献者:鹏城实验室、北大、武大、中科大、哈工大
</div>
</div>
</div>
<a class="flip" href="/html/2020/Framework_0325/18.html"></a>
</div>
<div class="sixteen wide mobile two wide tablet two wide computer column">
<div class="ui card">
<div class="content">
<div class="header" ><i class="ellipsis horizontal icon"></i></div>
</div>
</div>
<div class="flip flip-more"></div>
</div>
</div>
<div class="ui divider" style="margin-top:2.0em; margin-bottom:2.0em;"></div>
<div class="ui six column grid prorow">
<div class="eight wide mobile four wide tablet four wide computer column ipros">
<div class="ui card">
<div class="image">
<img src="http://www.openi.org.cn/statics/openi/images/index/openi-octopus.png" alt="启智章鱼" style=" height:50px;">
</div>
<div class="content">
<div class="meta">新一代智能资源管理系统</div>
</div>
<div class="extra content">
<div class="center floated author">
贡献者:鹏城实验室、北大
</div>
</div>
</div>
<a class="flip flip-blue" href="/html/2020/Environment_0325/9.html"></a>
</div>
<div class="eight wide mobile three wide tablet three wide computer column ipros">
<div class="ui card">
<div class="image">
<img src="http://www.openi.org.cn/statics/openi/images/index/openi-shanhu.png" alt="OpenI珊瑚" style=" height:50px;">
</div>
<div class="content">
<div class="meta">异构资源调度项目</div>
</div>
<div class="extra content">
<div class="center floated author">
贡献者:华为
</div>
</div>
</div>
<a class="flip flip-blue" href="/html/2020/Environment_0325/10.html"></a>
</div>
<div class="five wide mobile three wide tablet three wide computer column ipros">
<div class="ui card">
<div class="image">
<img src="http://www.openi.org.cn/statics/openi/images/index/openi-trustie.png" alt="启智Trustie" style=" height:50px;">
</div>
<div class="content">
<div class="meta">群体化协同创新环境</div>
</div>
<div class="extra content">
<div class="center floated author">
贡献者:国防科大、北航、北大…
</div>
</div>
</div>
<a class="flip flip-green" href="/html/2020/Environment_0325/11.html"></a>
</div>
<div class="five wide mobile three wide tablet three wide computer column ipros">
<div class="ui card">
<div class="image">
<img src="http://www.openi.org.cn/statics/openi/images/index/huawei.png" alt="华为" style=" height:25px; margin-top:32px;">
</div>
<div class="content">
<div class="meta">华为软开云</div>
</div>
</div>
<a class="flip flip-green"></a>
</div>
<div class="six wide mobile three wide tablet three wide computer column ipros">
<div class="ui card">
<div class="image">
<img src="http://www.openi.org.cn/statics/openi/images/index/openi-zhongheng.png" alt="OpenI 纵横" style=" height:50px;">
</div>
<div class="content">
<div class="meta">数据协同环境</div>
</div>
<div class="extra content">
<div class="center floated author">
贡献者:微众银行
</div>
</div>
</div>
<a class="flip flip-green" href="/html/2020/Environment_0325/13.html"></a>
</div>
</div>
<div class="ui divider" style="margin-top:2.0em; margin-bottom:2.0em;"></div>
<div class="ui six column grid prorow">
<div class="sixteen wide mobile six wide tablet six wide computer column ipros">
<div class="content ui grid">
<div class="header sixteen wide column">
<div class="ui centered card" style=" margin-top:0.5em; margin-bottom:0.5em;">
<div class="content">
<div class="header">鹏城云脑1、2</div>
</div>
</div>
<a class="flip flip-green"></a>
</div>
<div class="header sixteen wide column">
<div class="ui centered card" style=" margin-top:0.5em; margin-bottom:0.5em;">
<div class="content">
<div class="header">北京、合肥、苏州…</div>
</div>
</div>
<a class="flip flip-green"></a>
</div>
</div>
</div>
<div class="eight wide mobile two wide tablet four wide computer column ipros">
<div class="ui card">
<div class="content">
<div class="header" style=" padding-top:0.8em;padding-bottom:0.5em"><span style="color: #5170ff;">OpenI</span> <b style="color:#FFF">海藻</b></div>
<div class="meta">可配置指令集和微架构的AI开源芯片</div>
</div>
<div class="extra content">
<div class="center floated author">
贡献者:北大、中科院、鹏城实验室
</div>
</div>
</div>
<a class="flip flip-green" href="/html/2020/Framework_0325/15.html"></a>
</div>
<div class="eight wide mobile three wide tablet four wide computer column ipros">
<div class="ui card">
<div class="image">
<img src="http://www.openi.org.cn/statics/openi/images/index/huaweicloud.png" alt="华为云" style=" height:50px; margin-top:32px;">
</div>
</div>
<a class="flip flip-green"></a>
</div>
<div class="sixteen wide mobile two wide tablet two wide computer column">
<div class="ui card">
<div class="content">
<div class="header" ><i class="ellipsis horizontal icon"></i></div>
</div>
</div>
<div class="flip flip-more"></div>
</div>
</div>
</div>
</div>

<div class="ui stackable middle very relaxed page grid">
<div class="center column">
<h1 class="ui header section--header" style=" margin-top:1.0em">启智社区期待您的加入</h1>
<p class="large" style="padding: 0 0 43px;">
OpenI社区旨在促进人工智能领域的开源开放协同创新,构建OpenI的技术链、创新链和生态链、推动人工智能产业健康快速发展及其在社会经济各领域的广泛应用。围绕重大产业创新,汇聚创新资源,促进众创共享,形成产业生态的目标,让"一体两翼"构想下的以技术专家为主体组成的多个工作组(标准工作组、知识产权工作组、投融资工作组、开源治理工作组等)、和以企业为主体的多个应用推进组(智能交通推进组、智能医疗推进组、智能金融推进组、智能教育推进组等)作为一个整体进行工作。以"完全开源、完全开放、完全免费、尊重创新"为准则,汇聚学术机构、商业实体、自然人或任何其他法人,共建共享开源软件、开源硬件和开源数据的超级社区;以众智、赛智、创智、有智等工作方法,努力建设成具有国际影响力的人工智能开源开放平台。
</p>
<a class="ui blue button" href="https://www.openi.org.cn/html/Club/2019/0228/17.html" style="padding-left:5.0rem;padding-right:5.0rem;">加入OpenI社区 <i class="arrow right icon"></i></a>
<div style="margin-top:80px;">
<img src="https://www.openi.org.cn/statics/openi/images/index/mem-logos.png" alt="OpenI前期参与成员" style="width:100%; max-width:1200px;">
</div>
</div>
</div>
</div>
{{template "base/footer" .}}

+ 27
- 0
custom/templates/org/header.tmpl View File

@@ -0,0 +1,27 @@

<div class="organization-header">
<div class="ui container">
<div class="ui vertically grid head">
<div class="column">
<div class="ui header">
{{with .Org}}
<img class="ui image" src="{{.SizedRelAvatarLink 100}}">
<span class="text thin grey"><a href="{{.HomeLink}}">{{.DisplayName}}</a></span>
{{end}}
{{if .IsOrganizationOwner}}
<div class="ui right">
<a class="ui green button" href="{{.OrgLink}}/teams/new">{{svg "octicon-plus" 16}} {{.i18n.Tr "org.create_new_team"}}</a>
</div>
{{end}}
{{if .CanCreateOrgRepo}}
<div class="ui right">
<a class="ui green button" href="{{AppSubUrl}}/repo/create?org={{.Org.ID}}">{{svg "octicon-plus" 16}} {{.i18n.Tr "new_repo"}}</a>
</div>
{{end}}
</div>
</div>
</div>
</div>
</div>


+ 87
- 0
custom/templates/org/home.tmpl View File

@@ -0,0 +1,87 @@
{{template "base/head" .}}
<div class="organization profile">
{{/* overflow: auto is the clearfix - this avoids the image going beyond
the container where it is supposed to stay inside. */}}
<div class="organization-info">
<div class="ui center aligned container " style="overflow: auto">
<img class="ui circular image" id="org-avatar" src="{{.Org.SizedRelAvatarLink 140}}"/>
<div id="org-info">
<div class="ui header">
{{.Org.DisplayName}}
{{if .IsOrganizationOwner}}<a class="middle text grey" href="{{.OrgLink}}/settings">{{svg "octicon-gear" 16}}</a>{{end}}
</div>
{{if .Org.Description}}<p class="text grey desc">{{.Org.Description}}</p>{{end}}
<div class="meta">
{{if .Org.Location}}<div class="item">{{svg "octicon-location" 16}} <span>{{.Org.Location}}</span></div>{{end}}
{{if .Org.Website}}<div class="item">{{svg "octicon-link" 16}} <a target="_blank" rel="noopener noreferrer" href="{{.Org.Website}}">{{.Org.Website}}</a></div>{{end}}
</div>
</div>
</div>
</div>

<div class="ui container">
<div class="ui stackable grid">
{{template "org/navber" .}}
<div class="ui fourteen wide computer column">
<div class="ui mobile reversed stackable grid">
<div class="ui ten wide tablet eleven wide computer column">
{{if .CanCreateOrgRepo}}
<div class="text right">
<a class="ui green button" href="{{AppSubUrl}}/repo/create?org={{.Org.ID}}">{{.i18n.Tr "new_repo"}}</a>
</div>
{{end}}
{{template "org/repo_list" .}}
{{template "base/paginate" .}}
</div>

<div class="ui sixteen wide mobile six wide tablet five wide computer column">
<h4 class="ui top attached header">
<strong>{{.i18n.Tr "org.people"}}</strong>
{{if .IsOrganizationMember}}
<div class="ui right">
<a class="text grey" href="{{.OrgLink}}/members">{{.Org.NumMembers}} {{svg "octicon-chevron-right" 16}}</a>
</div>
{{end}}
</h4>
<div class="ui attached segment members">
{{$isMember := .IsOrganizationMember}}
{{range .Members}}
{{if or $isMember (.IsPublicMember $.Org.ID)}}
<a href="{{.HomeLink}}" title="{{.Name}}{{if .FullName}} ({{.FullName}}){{end}}"><img class="ui avatar" src="{{.RelAvatarLink}}"></a>
{{end}}
{{end}}
</div>

{{if .IsOrganizationMember}}
<div class="ui top attached header">
<strong>{{.i18n.Tr "org.teams"}}</strong>
<div class="ui right">
<a class="text grey" href="{{.OrgLink}}/teams"><span>{{.Org.NumTeams}}</span> {{svg "octicon-chevron-right" 16}}</a>
</div>
</div>
<div class="ui attached table segment teams">
{{range .Teams}}
<div class="item">
<a href="{{$.OrgLink}}/teams/{{.LowerName}}"><strong class="team-name">{{.Name}}</strong></a>
<p class="text grey">
<a href="{{$.OrgLink}}/teams/{{.LowerName}}"><strong>{{.NumMembers}}</strong> {{$.i18n.Tr "org.lower_members"}}</a> ·
<a href="{{$.OrgLink}}/teams/{{.LowerName}}/repositories"><strong>{{.NumRepos}}</strong> {{$.i18n.Tr "org.lower_repositories"}}</a>
</p>
</div>
{{end}}
</div>
{{if .IsOrganizationOwner}}
<div class="ui bottom attached segment">
<a class="ui blue small button" href="{{.OrgLink}}/teams/new">{{.i18n.Tr "org.create_new_team"}}</a>
</div>
{{end}}
{{end}}
</div>
</div>
</div>
</div>
</div>
</div>
{{template "base/footer" .}}

+ 75
- 0
custom/templates/org/member/members.tmpl View File

@@ -0,0 +1,75 @@
{{template "base/head" .}}
<div class="organization members">
{{template "org/header" .}}
<div class="ui container">
{{template "base/alert" .}}
<div class="ui stackable grid">
{{template "org/navber" .}}
<div class="ui fourteen wide computer column list">
{{ range .Members}}
<div class="item ui grid">
<div class="ui two wide column">
<img class="ui avatar" src="{{.SizedRelAvatarLink 48}}">
</div><div class="ui three wide column">
<div class="meta"><a href="{{.HomeLink}}">{{.Name}}</a></div>
<div class="meta">{{.FullName}}</div>
</div><div class="ui four wide column center">
<div class="meta">
{{$.i18n.Tr "org.members.membership_visibility"}}
</div>
<div class="meta">
{{ $isPublic := index $.MembersIsPublicMember .ID}}
{{if $isPublic}}
<strong>{{$.i18n.Tr "org.members.public"}}</strong>
{{if or (eq $.SignedUser.ID .ID) $.IsOrganizationOwner}}(<a class="link-action" href data-url="{{$.OrgLink}}/members/action/private?uid={{.ID}}">{{$.i18n.Tr "org.members.public_helper"}}</a>){{end}}
{{else}}
<strong>{{$.i18n.Tr "org.members.private"}}</strong>
{{if or (eq $.SignedUser.ID .ID) $.IsOrganizationOwner}}(<a class="link-action" href data-url="{{$.OrgLink}}/members/action/public?uid={{.ID}}">{{$.i18n.Tr "org.members.private_helper"}}</a>){{end}}
{{end}}
</div>
</div><div class="ui three wide column center">
<div class="meta">
{{$.i18n.Tr "org.members.member_role"}}
</div>
<div class="meta">
<strong>{{if index $.MembersIsUserOrgOwner .ID}}{{svg "octicon-shield-lock" 16}} {{$.i18n.Tr "org.members.owner"}}{{else}}{{$.i18n.Tr "org.members.member"}}{{end}}</strong>
</div>
</div><div class="ui one wide column center">
<div class="meta">
2FA
</div>
<div class="meta">
<strong>
{{if index $.MembersTwoFaStatus .ID}}
<span class="text green">{{svg "octicon-check" 16}}</span>
{{else}}
{{svg "octicon-x" 16}}
{{end}}
</strong>
</div>
</div><div class="ui three wide column">
<div class="text right">
{{if eq $.SignedUser.ID .ID}}
<form method="post" action="{{$.OrgLink}}/members/action/leave">
{{$.CsrfTokenHtml}}
<button type="submit" class="ui red small button" name="uid" value="{{.ID}}">{{$.i18n.Tr "org.members.leave"}}</button>
</form>
{{else if $.IsOrganizationOwner}}
<form method="post" action="{{$.OrgLink}}/members/action/remove">
{{$.CsrfTokenHtml}}
<button type="submit" class="ui red small button" name="uid" value="{{.ID}}">{{$.i18n.Tr "org.members.remove"}}</button>
</form>
{{end}}
</div>
</div>
</div>
{{end}}
</div>
{{template "base/paginate" .}}
</div>
</div>
</div>
{{template "base/footer" .}}

+ 33
- 0
custom/templates/org/navber.tmpl View File

@@ -0,0 +1,33 @@
<div class="tablet only mobile only sixteen wide mobile sixteen wide tablet column row">
<div class="ui secondary pointing tabular top attached borderless menu navbar">
<a class="{{if $.PageIsOrgHome}}active{{end}} item" href="{{.HomeLink}}">
{{svg "octicon-home" 16}}&nbsp;{{$.i18n.Tr "org.组织主页"}}
</a>
<a class="{{if $.PageIsOrgMembers}}active{{end}} item" href="{{$.OrgLink}}/members">
{{svg "octicon-organization" 16}}&nbsp;{{$.i18n.Tr "org.people"}}
</a>
<a class="{{if $.PageIsOrgTeams}}active{{end}} item" href="{{$.OrgLink}}/teams">
{{svg "octicon-jersey" 16}}&nbsp;{{$.i18n.Tr "org.teams"}}
</a>
</div>
</div>
<!--平板、移动端-->
<div class="computer only two wide computer column">
<div class="ui grid">
<div class="sixteen wide column ui secondary sticky pointing tabular vertical menu">
{{with .Org}}
<a class="{{if $.PageIsOrgHome}}active{{end}} item" href="{{.HomeLink}}">
{{svg "octicon-home" 16}}&nbsp;{{$.i18n.Tr "org.主页"}}
</a>
{{end}}
<a class="{{if $.PageIsOrgMembers}}active{{end}} item" href="{{$.OrgLink}}/members">
{{svg "octicon-organization" 16}}&nbsp;{{$.i18n.Tr "org.people"}}
</a>
<a class="{{if $.PageIsOrgTeams}}active{{end}} item" href="{{$.OrgLink}}/teams">
{{svg "octicon-jersey" 16}}&nbsp;{{$.i18n.Tr "org.teams"}}
</a>
</div>
</div>
</div>
<!--电脑、宽屏-->

+ 73
- 0
custom/templates/org/repo_list.tmpl View File

@@ -0,0 +1,73 @@
<h2 class="ui left floated medium header">
{{.i18n.Tr "explore.repos"}}
</h2>
<div class="ui right floated secondary filter menu">
<!-- Sort -->
<div class="ui right dropdown type jump item">
<span class="text">
{{.i18n.Tr "repo.issues.filter_sort"}}
<i class="dropdown icon"></i>
</span>
<div class="menu">
<a class="{{if eq .SortType "newest"}}active{{end}} item" href="{{$.Link}}?sort=newest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.latest"}}</a>
<a class="{{if eq .SortType "oldest"}}active{{end}} item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a>
<a class="{{if eq .SortType "alphabetically"}}active{{end}} item" href="{{$.Link}}?sort=alphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.alphabetically"}}</a>
<a class="{{if eq .SortType "reversealphabetically"}}active{{end}} item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a>
<a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a>
<a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a>
<a class="{{if eq .SortType "moststars"}}active{{end}} item" href="{{$.Link}}?sort=moststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.moststars"}}</a>
<a class="{{if eq .SortType "feweststars"}}active{{end}} item" href="{{$.Link}}?sort=feweststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.feweststars"}}</a>
<a class="{{if eq .SortType "mostforks"}}active{{end}} item" href="{{$.Link}}?sort=mostforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.mostforks"}}</a>
<a class="{{if eq .SortType "fewestforks"}}active{{end}} item" href="{{$.Link}}?sort=fewestforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.fewestforks"}}</a>
</div>
</div>
</div>

<div class="ui clearing divider"></div>

<div class="ui repository list">
{{range .Repos}}
<div class="item">
<div class="ui header">
{{if .RelAvatarLink}}
<img class="ui avatar image" src="{{.RelAvatarLink}}">
{{end}}
<a class="name" href="{{.Link}}">
{{if or $.PageIsExplore $.PageIsProfileStarList }}{{if .Owner}}{{.Owner.Name}} / {{end}}{{end}}{{.Name}}
{{if .IsArchived}}<i class="archive icon archived-icon"></i>{{end}}
</a>
{{if .IsPrivate}}
<span class="middle text gold">{{svg "octicon-lock" 16}}</span>
{{else if .IsFork}}
<span class="middle">{{svg "octicon-repo-forked" 16}}</span>
{{else if .IsMirror}}
<span class="middle">{{svg "octicon-repo-clone" 16}}</span>
{{else if .Owner}}
{{if .Owner.Visibility.IsPrivate}}
<span class="text gold">{{svg "octicon-lock" 16}}</span>
{{end}}
{{end}}
<div class="ui right metas">
{{if .PrimaryLanguage }}
<span class="text grey"><i class="color-icon" style="background-color: {{.PrimaryLanguage.Color}}"></i>{{ .PrimaryLanguage.Language }}</span>
{{end}}
</div>
</div>
<div class="description">
{{if .DescriptionHTML}}<p class="has-emoji">{{.DescriptionHTML}}</p>{{end}}
{{if .Topics }}
<div class="ui tags">
{{range .Topics}}
{{if ne . "" }}<a href="{{AppSubUrl}}/explore/repos?q={{.}}&topic=1"><div class="ui small label topic">{{.}}</div></a>{{end}}
{{end}}
</div>
{{end}}
<p class="time">{{$.i18n.Tr "org.repo_updated"}} {{TimeSinceUnix .UpdatedUnix $.i18n.Lang}}</p>
</div>
</div>
{{else}}
<div>
{{$.i18n.Tr "explore.repo_no_results"}}
</div>
{{end}}
</div>

+ 48
- 0
custom/templates/org/team/teams.tmpl View File

@@ -0,0 +1,48 @@
{{template "base/head" .}}
<div class="organization teams">
{{template "org/header" .}}
<div class="ui container">
{{template "base/alert" .}}

<div class="ui stackable grid">
{{template "org/navber" .}}
<div class="ui fourteen wide computer column list">
<div class="ui two column grid">
{{range .Teams}}
<div class="column">
<div class="ui top attached header">
<a class="text black" href="{{$.OrgLink}}/teams/{{.LowerName}}"><strong>{{.Name}}</strong></a>
<div class="ui right">
{{if .IsMember $.SignedUser.ID}}
<form method="post" action="{{$.OrgLink}}/teams/{{.LowerName}}/action/leave">
{{$.CsrfTokenHtml}}
<button type="submit" class="ui red small button" name="uid" value="{{$.SignedUser.ID}}">{{$.i18n.Tr "org.teams.leave"}}</button>
</form>
{{else if $.IsOrganizationOwner}}
<form method="post" action="{{$.OrgLink}}/teams/{{.LowerName}}/action/join">
{{$.CsrfTokenHtml}}
<button type="submit" class="ui blue small button" name="uid" value="{{$.SignedUser.ID}}">{{$.i18n.Tr "org.teams.join"}}</button>
</form>
{{end}}
</div>
</div>
<div class="ui attached segment members">
{{range .Members}}
<a href="{{.HomeLink}}" title="{{.Name}}">
<img class="ui avatar image" src="{{.RelAvatarLink}}">
</a>
{{end}}
</div>
<div class="ui bottom attached header">
<p class="team-meta">{{.NumMembers}} {{$.i18n.Tr "org.lower_members"}} · {{.NumRepos}} {{$.i18n.Tr "org.lower_repositories"}}</p>
</div>
</div>
{{end}}
</div>
</div>
</div>
</div>
</div>
{{template "base/footer" .}}

+ 10
- 0
custom/templates/user/auth/signin.tmpl View File

@@ -0,0 +1,10 @@
{{template "base/head" .}}
<div class="user signin{{if .LinkAccountMode}} icon{{end}}">
{{template "user/auth/signin_navbar" .}}
<div class="ui container">
<div class="ui raised very padded text container segment">
{{template "user/auth/signin_inner" .}}
</div>
</div>
</div>
{{template "base/footer" .}}

+ 102
- 0
custom/templates/user/auth/signin_inner.tmpl View File

@@ -0,0 +1,102 @@
<style>
.full.height{background-color: #F9F9F9;}
.ui.left{ float:none;}
.ui.secondary.pointing.menu{ border-bottom:none;}
</style>
{{if or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeSignIn)}}
{{template "base/alert" .}}
{{end}}
<div class="ui centered grid">
<div class="sixteen wide mobile ten wide tablet ten wide computer column">
<div class="ui bottom aligned two column grid">
<div class="column">
<h2 class="ui header">
{{if .LinkAccountMode}}
{{.i18n.Tr "auth.oauth_signin_title"}}
{{else}}
{{.i18n.Tr "auth.login_userpass"}}
{{end}}
</h2>
</div>
{{if .ShowRegistrationButton}}
<div class="ui right floated column">
<a href="{{AppSubUrl}}/user/sign_up">{{.i18n.Tr "auth.sign_up_now" | Str2html}}</a>
</div>
{{end}}
</div>
<div class="ui grid">
<div class="column">
<form class="ui form" action="{{.SignInLink}}" method="post">
{{.CsrfTokenHtml}}
<div class="field">
<div class="ui left icon input {{if and (.Err_UserName) (or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeSignIn))}}error{{end}}">
<i class="user icon"></i>
<input id="user_name" name="user_name" value="{{.user_name}}" placeholder="{{.i18n.Tr "home.uname_holder"}}" autofocus required>
</div>
</div>
{{if or (not .DisablePassword) .LinkAccountMode}}
<div class="field">
<div class="ui left icon input {{if and (.Err_Password) (or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeSignIn))}}error{{end}}">
<i class="lock icon"></i>
<input id="password" name="password" type="password" value="{{.password}}" placeholder="{{.i18n.Tr "password"}}" autocomplete="off" required>
</div>
</div>
{{end}}
{{if not .LinkAccountMode}}
<div class="two fields inline">
<div class="field">
<div class="ui checkbox">
<label>{{.i18n.Tr "auth.remember_me"}}</label>
<input name="remember" type="checkbox">
</div>
</div>
<div class="field" style="padding-right: 0; text-align: right;">
<a href="{{AppSubUrl}}/user/forgot_password">{{.i18n.Tr "auth.forgot_password"}}</a>
</div>
</div>
{{end}}
<div class="ui hidden divider"></div>

<div class="center aligned field">
<button class="fluid large ui blue button">
{{if .LinkAccountMode}}
{{.i18n.Tr "auth.oauth_signin_submit"}}
{{else}}
{{.i18n.Tr "sign_in"}}
{{end}}
</button>
</div>
{{if and .OrderedOAuth2Names .OAuth2Providers}}
<div class="ui centered grid">
<div class="sixteen wide mobile ten wide tablet ten wide computer column">
<div class="oauth2 center">
<div id="oauth2-login-loader" class="ui disabled centered loader"></div>
<div>
<div id="oauth2-login-navigator">
<p>{{.i18n.Tr "sign_in_with"}}</p>
{{range $key := .OrderedOAuth2Names}}
{{$provider := index $.OAuth2Providers $key}}
<a href="{{AppSubUrl}}/user/oauth2/{{$key}}">
<img
alt="{{$provider.DisplayName}}{{if eq $provider.Name "openidConnect"}} ({{$key}}){{end}}"
title="{{$provider.DisplayName}}{{if eq $provider.Name "openidConnect"}} ({{$key}}){{end}}"
class="{{$provider.Name}}"
src="{{AppSubUrl}}{{$provider.Image}}"
onclick="window.onOAuthLoginClick()"
></a>
{{end}}
</div>
</div>
</div>
</div>
</div>
{{end}}
</form>
</div>
</div>
</div>
</div>

+ 85
- 0
custom/templates/user/auth/signup_inner.tmpl View File

@@ -0,0 +1,85 @@
<style>
.full.height{background-color: #F9F9F9;}
</style>

<div class="ui container very padded {{if .LinkAccountMode}} icon{{end}}" style=" padding-top: 5.0rem; padding-bottom: 3.0rem;">
<div class="ui raised very padded text container segment">
<div class="ui centered grid">
<div class="sixteen wide mobile ten wide tablet ten wide computer column">
<div class="ui bottom aligned two column grid">
<div class="column">
<h2 class="ui header">
{{if .LinkAccountMode}}
{{.i18n.Tr "auth.oauth_signup_title"}}
{{else}}
{{.i18n.Tr "sign_up"}}
{{end}}
</h2>
</div>
{{if not .LinkAccountMode}}
<div class="ui right floated column">
<a href="{{AppSubUrl}}/user/login">{{.i18n.Tr "auth.register_helper_msg"}}</a>
</div>
{{end}}
</div>
<div class="ui grid">
<div class="column">
<form class="ui form" action="{{.SignUpLink}}" method="post">
{{.CsrfTokenHtml}}
{{if or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeRegister)}}
{{template "base/alert" .}}
{{end}}
{{if .DisableRegistration}}
<p>{{.i18n.Tr "auth.disable_register_prompt"}}</p>
{{else}}
<div class="field {{if and (.Err_UserName) (or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeRegister))}}error{{end}}">
<input id="user_name" name="user_name" value="{{.user_name}}" placeholder="{{.i18n.Tr "username"}}" autofocus required>
</div>
<div class="field {{if .Err_Email}}error{{end}}">
<input id="email" name="email" type="email" value="{{.email}}" placeholder="{{.i18n.Tr "email"}}" required>
</div>

{{if not .DisablePassword}}
<div class="field {{if and (.Err_Password) (or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeRegister))}}error{{end}}">
<input id="password" name="password" type="password" value="{{.password}}" placeholder="{{.i18n.Tr "password"}}" autocomplete="off" required>
</div>
<div class="field {{if and (.Err_Password) (or (not .LinkAccountMode) (and .LinkAccountMode .LinkAccountModeRegister))}}error{{end}}">
<input id="retype" name="retype" type="password" value="{{.retype}}" placeholder="{{.i18n.Tr "re_type"}}" autocomplete="off" required>
</div>
{{end}}
{{if and .EnableCaptcha (eq .CaptchaType "image")}}
<div class="field">
{{.Captcha.CreateHtml}}
</div>
<div class="field {{if .Err_Captcha}}error{{end}}">
<input id="captcha" name="captcha" value="{{.captcha}}" placeholder="{{.i18n.Tr "captcha"}}" autocomplete="off">
</div>
{{end}}
{{if and .EnableCaptcha (eq .CaptchaType "recaptcha")}}
<div class="field required">
<div class="g-recaptcha" data-sitekey="{{ .RecaptchaSitekey }}"></div>
</div>
{{end}}
<div class="ui hidden divider"></div>

<div class="center aligned field">
<button class="fluid large ui blue button">
{{if .LinkAccountMode}}
{{.i18n.Tr "auth.oauth_signup_submit"}}
{{else}}
{{.i18n.Tr "auth.create_new_account"}}
{{end}}
</button>
</div>
{{end}}
</form>
</div>
</div>
</div>
</div>
</div>
</div>

+ 59
- 0
custom/templates/user/dashboard/navbar.tmpl View File

@@ -0,0 +1,59 @@
<div class="dashboard-navbar">
<div class="ui container secondary stackable menu">
<div class="item">
<div class="ui floating dropdown link jump">
<span class="text">
<img class="ui avatar image" src="{{.ContextUser.RelAvatarLink}}" title="{{.ContextUser.Name}}" width="28" height="28">
{{.ContextUser.ShortName 20}}
<i class="dropdown icon"></i>
</span>
<div class="context user overflow menu" tabindex="-1">
<div class="ui header">
{{.i18n.Tr "home.switch_dashboard_context"}}
</div>
<div class="scrolling menu items">
<a class="{{if eq .ContextUser.ID .SignedUser.ID}}active selected{{end}} item" href="{{AppSubUrl}}/{{if .PageIsIssues}}issues{{else if .PageIsPulls}}pulls{{else if .PageIsMilestonesDashboard}}milestones{{end}}">
<img class="ui avatar image" src="{{.SignedUser.RelAvatarLink}}" width="28" height="28">
{{.SignedUser.Name}}
</a>
{{range .Orgs}}
<a class="{{if eq $.ContextUser.ID .ID}}active selected{{end}} item" title="{{.Name}}" href="{{AppSubUrl}}/org/{{.Name}}/{{if $.PageIsIssues}}issues{{else if $.PageIsPulls}}pulls{{else if $.PageIsMilestonesDashboard}}milestones{{else}}dashboard{{end}}">
<img class="ui avatar image" src="{{.RelAvatarLink}}" width="28" height="28">
{{.ShortName 20}}
</a>
{{end}}
</div>
{{if .SignedUser.CanCreateOrganization}}
<a class="item" href="{{AppSubUrl}}/org/create">
{{svg "octicon-plus" 16}}&nbsp;&nbsp;&nbsp;{{.i18n.Tr "new_org"}}
</a>
{{end}}
</div>
</div>
</div>

{{if .ContextUser.IsOrganization}}
<div class="right stackable menu">
<a class="{{if .PageIsNews}}active{{end}} item" style="margin-left: auto" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/dashboard">
{{svg "octicon-rss" 16}}&nbsp;{{.i18n.Tr "activities"}}
</a>
<a class="{{if .PageIsIssues}}active{{end}} item" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/issues">
{{svg "octicon-issue-opened" 16}}&nbsp;{{.i18n.Tr "issues"}}
</a>
<a class="{{if .PageIsPulls}}active{{end}} item" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/pulls">
{{svg "octicon-git-pull-request" 16}}&nbsp;{{.i18n.Tr "pull_requests"}}
</a>
{{if .ShowMilestonesDashboardPage}}
<a class="{{if .PageIsMilestonesDashboard}}active{{end}} item" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}/milestones">
{{svg "octicon-milestone" 16}}&nbsp;{{.i18n.Tr "milestones"}}
</a>
{{end}}
<div class="item">
<a class="ui blue basic button" href="{{.ContextUser.HomeLink}}" title='{{.i18n.Tr "home.view_home" .ContextUser.Name}}'>
{{.i18n.Tr "home.view_home" (.ContextUser.ShortName 10)}}
</a>
</div>
</div>
{{end}}
</div>
</div>

+ 0
- 0
templates/explore/repo_right.tmpl View File


Loading…
Cancel
Save