# Conflicts: # modules/bindata/bindata.go # public/css/gogs.min.csstags/v1.2.0-rc1
| @@ -17,3 +17,9 @@ notifications: | |||||
| email: | email: | ||||
| - u@gogs.io | - u@gogs.io | ||||
| slack: gophercn:o5pSanyTeNhnfYc3QnG0X7Wx | slack: gophercn:o5pSanyTeNhnfYc3QnG0X7Wx | ||||
| webhooks: | |||||
| urls: | |||||
| - https://webhooks.gitter.im/e/b590f8e03882f7aedc3e | |||||
| on_success: change | |||||
| on_failure: always | |||||
| on_start: never | |||||
| @@ -198,6 +198,7 @@ SESSION_LIFE_TIME = 86400 | |||||
| SERVICE = server | SERVICE = server | ||||
| AVATAR_UPLOAD_PATH = data/avatars | AVATAR_UPLOAD_PATH = data/avatars | ||||
| ; Chinese users can choose "duoshuo" | ; Chinese users can choose "duoshuo" | ||||
| ; or a custom avatar source, like: http://cn.gravatar.com/avatar/ | |||||
| GRAVATAR_SOURCE = gravatar | GRAVATAR_SOURCE = gravatar | ||||
| DISABLE_GRAVATAR = false | DISABLE_GRAVATAR = false | ||||
| @@ -317,4 +318,4 @@ bg-BG = bg | |||||
| it-IT = it | it-IT = it | ||||
| [other] | [other] | ||||
| SHOW_FOOTER_BRANDING = false | |||||
| SHOW_FOOTER_BRANDING = false | |||||
| @@ -14,6 +14,9 @@ version = Version | |||||
| page = Page | page = Page | ||||
| template = Template | template = Template | ||||
| language = Language | language = Language | ||||
| create_new = Create new... | |||||
| user_profile_and_more = User profile and more | |||||
| signed_in_as = Signed in as | |||||
| username = Username | username = Username | ||||
| email = E-mail | email = E-mail | ||||
| @@ -32,6 +35,8 @@ manage_org = Manage Organizations | |||||
| admin_panel = Admin Panel | admin_panel = Admin Panel | ||||
| account_settings = Account Settings | account_settings = Account Settings | ||||
| settings = Settings | settings = Settings | ||||
| your_profile = Your Profile | |||||
| your_settings = Your Settings | |||||
| news_feed = News Feed | news_feed = News Feed | ||||
| pull_requests = Pull Requests | pull_requests = Pull Requests | ||||
| @@ -122,15 +122,6 @@ | |||||
| "outputPathIsOutsideProject": 0, | "outputPathIsOutsideProject": 0, | ||||
| "outputPathIsSetByUser": 0 | "outputPathIsSetByUser": 0 | ||||
| }, | }, | ||||
| "\/public\/css\/gogs.min.css": { | |||||
| "fileType": 16, | |||||
| "ignore": 1, | |||||
| "ignoreWasSetByUser": 0, | |||||
| "inputAbbreviatedPath": "\/public\/css\/gogs.min.css", | |||||
| "outputAbbreviatedPath": "No Output Path", | |||||
| "outputPathIsOutsideProject": 0, | |||||
| "outputPathIsSetByUser": 0 | |||||
| }, | |||||
| "\/public\/css\/jquery.datetimepicker.css": { | "\/public\/css\/jquery.datetimepicker.css": { | ||||
| "fileType": 16, | "fileType": 16, | ||||
| "ignore": 0, | "ignore": 0, | ||||
| @@ -308,26 +299,6 @@ | |||||
| "outputPathIsSetByUser": 0, | "outputPathIsSetByUser": 0, | ||||
| "processed": 1 | "processed": 1 | ||||
| }, | }, | ||||
| "\/public\/less\/_base.less": { | |||||
| "allowInsecureImports": 0, | |||||
| "createSourceMap": 0, | |||||
| "disableJavascript": 0, | |||||
| "fileType": 1, | |||||
| "ieCompatibility": 1, | |||||
| "ignore": 1, | |||||
| "ignoreWasSetByUser": 0, | |||||
| "inputAbbreviatedPath": "\/public\/less\/_base.less", | |||||
| "outputAbbreviatedPath": "\/public\/css\/_base.css", | |||||
| "outputPathIsOutsideProject": 0, | |||||
| "outputPathIsSetByUser": 0, | |||||
| "outputStyle": 0, | |||||
| "relativeURLS": 0, | |||||
| "shouldRunAutoprefixer": 0, | |||||
| "shouldRunBless": 0, | |||||
| "strictImports": 0, | |||||
| "strictMath": 0, | |||||
| "strictUnits": 0 | |||||
| }, | |||||
| "\/public\/less\/_form.less": { | "\/public\/less\/_form.less": { | ||||
| "allowInsecureImports": 0, | "allowInsecureImports": 0, | ||||
| "createSourceMap": 0, | "createSourceMap": 0, | ||||
| @@ -97,6 +97,9 @@ func Migrate(x *xorm.Engine) error { | |||||
| } | } | ||||
| v := currentVersion.Version | v := currentVersion.Version | ||||
| if int(v) > len(migrations) { | |||||
| return nil | |||||
| } | |||||
| for i, m := range migrations[v-_MIN_DB_VER:] { | for i, m := range migrations[v-_MIN_DB_VER:] { | ||||
| log.Info("Migration: %s", m.Description()) | log.Info("Migration: %s", m.Description()) | ||||
| if err = m.Migrate(x); err != nil { | if err = m.Migrate(x); err != nil { | ||||
| @@ -15,10 +15,11 @@ import ( | |||||
| "strings" | "strings" | ||||
| "time" | "time" | ||||
| "gopkg.in/ini.v1" | |||||
| "github.com/Unknwon/com" | "github.com/Unknwon/com" | ||||
| "github.com/macaron-contrib/oauth2" | "github.com/macaron-contrib/oauth2" | ||||
| "github.com/macaron-contrib/session" | "github.com/macaron-contrib/session" | ||||
| "gopkg.in/ini.v1" | |||||
| "github.com/gogits/gogs/modules/bindata" | "github.com/gogits/gogs/modules/bindata" | ||||
| "github.com/gogits/gogs/modules/log" | "github.com/gogits/gogs/modules/log" | ||||
| @@ -345,11 +346,13 @@ func NewConfigContext() { | |||||
| if !filepath.IsAbs(AvatarUploadPath) { | if !filepath.IsAbs(AvatarUploadPath) { | ||||
| AvatarUploadPath = path.Join(workDir, AvatarUploadPath) | AvatarUploadPath = path.Join(workDir, AvatarUploadPath) | ||||
| } | } | ||||
| switch sec.Key("GRAVATAR_SOURCE").MustString("gravatar") { | |||||
| switch source := sec.Key("GRAVATAR_SOURCE").MustString("gravatar"); source { | |||||
| case "duoshuo": | case "duoshuo": | ||||
| GravatarSource = "http://gravatar.duoshuo.com/avatar/" | GravatarSource = "http://gravatar.duoshuo.com/avatar/" | ||||
| default: | |||||
| case "gravatar": | |||||
| GravatarSource = "//1.gravatar.com/avatar/" | GravatarSource = "//1.gravatar.com/avatar/" | ||||
| default: | |||||
| GravatarSource = source | |||||
| } | } | ||||
| DisableGravatar = sec.Key("DISABLE_GRAVATAR").MustBool() | DisableGravatar = sec.Key("DISABLE_GRAVATAR").MustBool() | ||||
| if OfflineMode { | if OfflineMode { | ||||
| @@ -222,7 +222,10 @@ $(document).ready(function () { | |||||
| // Semantic UI modules. | // Semantic UI modules. | ||||
| $('.dropdown').dropdown(); | $('.dropdown').dropdown(); | ||||
| $('.jump.dropdown').dropdown({ | $('.jump.dropdown').dropdown({ | ||||
| action: 'hide' | |||||
| action: 'hide', | |||||
| onShow: function() { | |||||
| $('.poping.up').popup('hide'); | |||||
| } | |||||
| }); | }); | ||||
| $('.slide.up.dropdown').dropdown({ | $('.slide.up.dropdown').dropdown({ | ||||
| transition: 'slide up' | transition: 'slide up' | ||||
| @@ -233,6 +236,13 @@ $(document).ready(function () { | |||||
| showActivity: false | showActivity: false | ||||
| }); | }); | ||||
| $('.poping.up').popup(); | $('.poping.up').popup(); | ||||
| $('.top.menu .poping.up').popup({ | |||||
| onShow: function() { | |||||
| if ( $('.top.menu .menu.transition').hasClass('visible') ) { | |||||
| return false; | |||||
| } | |||||
| } | |||||
| }); | |||||
| // Helpers. | // Helpers. | ||||
| @@ -16,7 +16,6 @@ img { | |||||
| z-index: 900; | z-index: 900; | ||||
| left: 0; | left: 0; | ||||
| width: 100%; | width: 100%; | ||||
| padding: 5px 0; | |||||
| &.light { | &.light { | ||||
| background-color: white; | background-color: white; | ||||
| border-bottom: 1px solid #DDDDDD; | border-bottom: 1px solid #DDDDDD; | ||||
| @@ -25,10 +24,19 @@ img { | |||||
| .column .menu { | .column .menu { | ||||
| margin-top: 0; | margin-top: 0; | ||||
| } | } | ||||
| .brand { | |||||
| float: left; | |||||
| margin-top: 5px; | |||||
| margin-right: 5px; | |||||
| .top.menu a.item.brand { | |||||
| padding-left: 0; | |||||
| } | |||||
| .brand .ui.mini.image { | |||||
| width: 30px; | |||||
| } | |||||
| .top.menu a.item:hover, | |||||
| .top.menu .dropdown.item:hover, | |||||
| .top.menu .dropdown.item.active { | |||||
| background-color: transparent; | |||||
| } | |||||
| .top.menu a.item:hover { | |||||
| color: rgba(0,0,0,.45); | |||||
| } | } | ||||
| .head.link.item { | .head.link.item { | ||||
| padding-right: 0!important; | padding-right: 0!important; | ||||
| @@ -37,8 +45,8 @@ img { | |||||
| margin-right: 5px; | margin-right: 5px; | ||||
| } | } | ||||
| } | } | ||||
| .user.avatar { | |||||
| padding: 0; | |||||
| .avatar > .ui.image { | |||||
| margin-right: 0; | |||||
| } | } | ||||
| .searchbox { | .searchbox { | ||||
| background-color: rgb(244, 244, 244)!important; | background-color: rgb(244, 244, 244)!important; | ||||
| @@ -117,6 +125,10 @@ footer { | |||||
| .generate-img(@n, (@i + 1)); | .generate-img(@n, (@i + 1)); | ||||
| } | } | ||||
| .octicon.icon { | |||||
| font-family: octicons; | |||||
| } | |||||
| // Accessibility | // Accessibility | ||||
| .sr-only { | .sr-only { | ||||
| position: absolute; | position: absolute; | ||||
| @@ -44,15 +44,23 @@ | |||||
| <body> | <body> | ||||
| <div class="full height"> | <div class="full height"> | ||||
| <noscript>Please enable JavaScript in your browser!</noscript> | <noscript>Please enable JavaScript in your browser!</noscript> | ||||
| {{if not .PageIsInstall}} | {{if not .PageIsInstall}} | ||||
| <div class="following bar light"> | <div class="following bar light"> | ||||
| <div class="ui container"> | <div class="ui container"> | ||||
| <div class="column"> | <div class="column"> | ||||
| <div class="ui secondary menu"> | |||||
| <img class="img-15 ui image brand" src="{{AppSubUrl}}/img/favicon.png"> | |||||
| <a class="view-ui item {{if .PageIsHome}}active{{end}}" href="{{AppSubUrl}}/">{{if .IsSigned}}{{.i18n.Tr "dashboard"}}{{else}}{{.i18n.Tr "home"}}{{end}}</a> | |||||
| <a class="view-ui item {{if .PageIsExplore}}active{{end}}" href="{{AppSubUrl}}/explore">{{.i18n.Tr "explore"}}</a> | |||||
| <a class="view-ui item" target="_blank" href="http://gogs.io/docs">{{.i18n.Tr "help"}}</a> | |||||
| <div class="ui top secondary menu"> | |||||
| <a class="item brand" href="{{AppSubUrl}}/"> | |||||
| <img class="ui mini image" src="{{AppSubUrl}}/img/favicon.png"> | |||||
| </a> | |||||
| {{if .IsSigned}} | |||||
| <a class="item{{if .PageIsDashboard}} active{{end}}" href="{{AppSubUrl}}/">{{.i18n.Tr "dashboard"}}</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">{{.i18n.Tr "explore"}}</a> | |||||
| <!-- <div class="item"> | <!-- <div class="item"> | ||||
| <div class="ui icon input"> | <div class="ui icon input"> | ||||
| <input class="searchbox" type="text" placeholder="{{.i18n.Tr "search_project"}}"> | <input class="searchbox" type="text" placeholder="{{.i18n.Tr "search_project"}}"> | ||||
| @@ -61,38 +69,84 @@ | |||||
| </div> --> | </div> --> | ||||
| {{if .IsSigned}} | {{if .IsSigned}} | ||||
| <a class="item{{if .PageIsIssues}} active{{end}}" href="{{AppSubUrl}}/issues">{{.i18n.Tr "issues"}}</a> | |||||
| <div class="right menu"> | <div class="right menu"> | ||||
| <a class="view-ui item user avatar poping up" href="{{AppSubUrl}}/{{.SignedUser.Name}}" data-content="{{.SignedUser.Name}}" data-variation="inverted"> | |||||
| <img class="img-15" src="{{.SignedUser.AvatarLink}}"/> | |||||
| <span class="sr-only">{{.SignedUser.Name}}</span> | |||||
| </a> | |||||
| <div class="ui dropdown head link jump item"> | |||||
| <div class="ui dropdown head link jump item poping up" data-content="{{.i18n.Tr "create_new"}}" data-variation="tiny inverted"> | |||||
| <span class="text"> | <span class="text"> | ||||
| <i class="octicon octicon-plus"></i> | <i class="octicon octicon-plus"></i> | ||||
| <i class="dropdown icon"></i> | |||||
| <i class="octicon octicon-triangle-down"></i> | |||||
| </span> | </span> | ||||
| <div class="menu"> | <div class="menu"> | ||||
| <a class="item" href="{{AppSubUrl}}/repo/create"><i class="octicon octicon-repo-create"></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> | |||||
| <a class="item" href="{{AppSubUrl}}/org/create"><i class="octicon octicon-organization"></i> {{.i18n.Tr "new_org"}}</a> | |||||
| </div> | |||||
| </div> | |||||
| {{if .IsAdmin}} | |||||
| <a class="view-ui item poping up {{if .PageIsAdmin}}active{{end}}" href="{{AppSubUrl}}/admin" data-content="{{.i18n.Tr "admin_panel"}}" data-variation="inverted"><i class="octicon icon settings"></i><span class="sr-only">{{.i18n.Tr "admin_panel"}}</span></a> | |||||
| {{end}} | |||||
| <a class="view-ui item poping up {{if .PageIsSettings}}active{{end}}" href="{{AppSubUrl}}/user/settings" data-content="{{.i18n.Tr "account_settings"}}" data-variation="inverted"><i class="octicon octicon-settings"></i><span class="sr-only">{{.i18n.Tr "account_settings"}}</span></a> | |||||
| <a class="view-ui item poping up" href="{{AppSubUrl}}/user/logout" data-content="{{.i18n.Tr "sign_out"}}" data-variation="inverted"><i class="octicon octicon-sign-out"></i><span class="sr-only">{{.i18n.Tr "sign_out"}}</span></a> | |||||
| </div> | |||||
| <a class="item" href="{{AppSubUrl}}/repo/create"> | |||||
| <i class="octicon octicon-repo-create"></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> | |||||
| <a class="item" href="{{AppSubUrl}}/org/create"> | |||||
| <i class="octicon octicon-organization"></i> {{.i18n.Tr "new_org"}} | |||||
| </a> | |||||
| </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="{{.SignedUser.AvatarLink}}"> | |||||
| <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>{{.SignedUser.Name}}</strong> | |||||
| </div> | |||||
| <div class="divider"></div> | |||||
| <a class="item" href="{{AppSubUrl}}/{{.SignedUser.Name}}"> | |||||
| <i class="octicon icon octicon-person"></i> | |||||
| {{.i18n.Tr "your_profile"}}<!-- Your profile --> | |||||
| </a> | |||||
| <a class="item" href="{{AppSubUrl}}/user/settings"> | |||||
| <i class="octicon icon octicon-settings"></i> | |||||
| {{.i18n.Tr "your_settings"}}<!-- Your settings --> | |||||
| </a> | |||||
| <a class="item" target="_blank" href="http://gogs.io/docs" rel="noreferrer"> | |||||
| <i class="octicon icon octicon-question"></i> | |||||
| {{.i18n.Tr "help"}}<!-- Help --> | |||||
| </a> | |||||
| {{if .IsAdmin}} | |||||
| <div class="divider"></div> | |||||
| <a class="item" href="{{AppSubUrl}}/admin"> | |||||
| <i class="icon settings"></i> | |||||
| {{.i18n.Tr "admin_panel"}}<!-- Admin Panel --> | |||||
| </a> | |||||
| {{end}} | |||||
| <div class="divider"></div> | |||||
| <a class="item" href="{{AppSubUrl}}/user/logout"> | |||||
| <i class="octicon icon octicon-sign-out"></i> | |||||
| {{.i18n.Tr "sign_out"}}<!-- Sign Out --> | |||||
| </a> | |||||
| </div><!-- end content avatar menu --> | |||||
| </div><!-- end dropdown avatar menu --> | |||||
| </div><!-- end signed user right menu --> | |||||
| {{else}} | {{else}} | ||||
| <div class="ui right floated secondary menu"> | |||||
| <a class="item" target="_blank" href="http://gogs.io/docs" rel="noreferrer">{{.i18n.Tr "help"}}</a> | |||||
| <div class="right menu"> | |||||
| {{if .ShowRegistrationButton}} | {{if .ShowRegistrationButton}} | ||||
| <a class="view-ui item {{if .PageIsSignUp}}active{{end}}" href="{{AppSubUrl}}/user/sign_up"><i class="octicon octicon-person-add"></i> {{.i18n.Tr "register"}}</a> | |||||
| <a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up"> | |||||
| <i class="octicon octicon-person-add"></i> {{.i18n.Tr "register"}} | |||||
| </a> | |||||
| {{end}} | {{end}} | ||||
| <a class="view-ui item {{if .PageIsSignIn}}active{{end}}" href="{{AppSubUrl}}/user/login"><i class="octicon octicon-sign-in"></i> {{.i18n.Tr "sign_in"}}</a> | |||||
| </div> | |||||
| <a class="item{{if .PageIsSignIn}} active{{end}}" href="{{AppSubUrl}}/user/login"> | |||||
| <i class="octicon octicon-sign-in"></i> {{.i18n.Tr "sign_in"}} | |||||
| </a> | |||||
| </div><!-- end anonymous right menu --> | |||||
| {{end}} | {{end}} | ||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </div><!-- end top menu --> | |||||
| </div><!-- end column --> | |||||
| </div><!-- end container --> | |||||
| </div><!-- end bar --> | |||||
| {{end}} | {{end}} | ||||
| @@ -4,7 +4,7 @@ | |||||
| <a class="{{if .PageIsSettingsOptions}}active{{end}} item" href="{{.RepoLink}}/settings"> | <a class="{{if .PageIsSettingsOptions}}active{{end}} item" href="{{.RepoLink}}/settings"> | ||||
| {{.i18n.Tr "repo.settings.options"}} | {{.i18n.Tr "repo.settings.options"}} | ||||
| </a> | </a> | ||||
| <a class="{{if .PageIsSettingsCollaboration}}active{{end}} item" href="{.RepoLink}}/settings/collaboration"> | |||||
| <a class="{{if .PageIsSettingsCollaboration}}active{{end}} item" href="{{.RepoLink}}/settings/collaboration"> | |||||
| {{.i18n.Tr "repo.settings.collaboration"}} | {{.i18n.Tr "repo.settings.collaboration"}} | ||||
| </a> | </a> | ||||
| <a class="{{if .PageIsSettingsHooks}}active{{end}} item" href="{{.RepoLink}}/settings/hooks"> | <a class="{{if .PageIsSettingsHooks}}active{{end}} item" href="{{.RepoLink}}/settings/hooks"> | ||||
| @@ -17,4 +17,4 @@ | |||||
| {{.i18n.Tr "repo.settings.deploy_keys"}} | {{.i18n.Tr "repo.settings.deploy_keys"}} | ||||
| </a> | </a> | ||||
| </div> | </div> | ||||
| </div> | |||||
| </div> | |||||