mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	Finish new UI for release page
This commit is contained in:
		
							
								
								
									
										13
									
								
								cmd/web.go
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								cmd/web.go
									
									
									
									
									
								
							@@ -397,14 +397,17 @@ func runWeb(*cli.Context) {
 | 
				
			|||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		m.Post("/comment/:action", repo.Comment)
 | 
							m.Post("/comment/:action", repo.Comment)
 | 
				
			||||||
		m.Get("/releases/new", repo.NewRelease)
 | 
					
 | 
				
			||||||
		m.Post("/releases/new", bindIgnErr(auth.NewReleaseForm{}), repo.NewReleasePost)
 | 
							m.Group("/releases", func() {
 | 
				
			||||||
		m.Get("/releases/edit/:tagname", repo.EditRelease)
 | 
								m.Get("/new", repo.NewRelease)
 | 
				
			||||||
		m.Post("/releases/edit/:tagname", bindIgnErr(auth.EditReleaseForm{}), repo.EditReleasePost)
 | 
								m.Post("/new", bindIgnErr(auth.NewReleaseForm{}), repo.NewReleasePost)
 | 
				
			||||||
 | 
								m.Get("/edit/:tagname", repo.EditRelease)
 | 
				
			||||||
 | 
								m.Post("/edit/:tagname", bindIgnErr(auth.EditReleaseForm{}), repo.EditReleasePost)
 | 
				
			||||||
 | 
							}, middleware.RepoRef())
 | 
				
			||||||
	}, reqSignIn, middleware.RepoAssignment(true))
 | 
						}, reqSignIn, middleware.RepoAssignment(true))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	m.Group("/:username/:reponame", func() {
 | 
						m.Group("/:username/:reponame", func() {
 | 
				
			||||||
		m.Get("/releases", repo.Releases)
 | 
							m.Get("/releases", middleware.RepoRef(), repo.Releases)
 | 
				
			||||||
		m.Get("/issues", repo.Issues)
 | 
							m.Get("/issues", repo.Issues)
 | 
				
			||||||
		m.Get("/issues/:index", repo.ViewIssue)
 | 
							m.Get("/issues/:index", repo.ViewIssue)
 | 
				
			||||||
		m.Get("/issues/milestones", repo.Milestones)
 | 
							m.Get("/issues/milestones", repo.Milestones)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -377,6 +377,30 @@ diff.stats_desc = <strong> %d changed files</strong> with <strong>%d additions</
 | 
				
			|||||||
diff.bin = BIN
 | 
					diff.bin = BIN
 | 
				
			||||||
diff.view_file = View File
 | 
					diff.view_file = View File
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					release.releases = Releases
 | 
				
			||||||
 | 
					release.new_release = New Release
 | 
				
			||||||
 | 
					release.draft = Draft
 | 
				
			||||||
 | 
					release.prerelease = Pre-Release
 | 
				
			||||||
 | 
					release.stable = Stable
 | 
				
			||||||
 | 
					release.edit = edit
 | 
				
			||||||
 | 
					release.ahead = <strong>%d</strong> commits to %s since this release
 | 
				
			||||||
 | 
					release.source_code = Source Code
 | 
				
			||||||
 | 
					release.tag_name = Tag name
 | 
				
			||||||
 | 
					release.target = Target
 | 
				
			||||||
 | 
					release.tag_helper = Choose an existing tag, or create a new tag on publish.
 | 
				
			||||||
 | 
					release.release_title = Release title
 | 
				
			||||||
 | 
					release.content_with_md = Content with <a href="%s">Markdown</a>
 | 
				
			||||||
 | 
					release.write = Write
 | 
				
			||||||
 | 
					release.preview = Preview
 | 
				
			||||||
 | 
					release.content_placeholder = Write some content
 | 
				
			||||||
 | 
					release.loading = Loading...
 | 
				
			||||||
 | 
					release.prerelease_desc = This is a pre-release
 | 
				
			||||||
 | 
					release.prerelease_helper = We’ll point out that this release is identified as non-production ready.
 | 
				
			||||||
 | 
					release.publish = Publish Release
 | 
				
			||||||
 | 
					release.save_draft = Save Draft
 | 
				
			||||||
 | 
					release.edit_release = Edit Release
 | 
				
			||||||
 | 
					release.tag_name_already_exist = Release with this tag name has already existed.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[org]
 | 
					[org]
 | 
				
			||||||
org_name_holder = Organization Name
 | 
					org_name_holder = Organization Name
 | 
				
			||||||
org_name_helper = Great organization names are short and memorable.
 | 
					org_name_helper = Great organization names are short and memorable.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type MarkdownForm struct {
 | 
					type MarkdownForm struct {
 | 
				
			||||||
	Text    string `form:"text" binding:"Required"`
 | 
						Text    string `form:"text"`
 | 
				
			||||||
	Mode    string `form:"mode"`
 | 
						Mode    string `form:"mode"`
 | 
				
			||||||
	Context string `form:"context"`
 | 
						Context string `form:"context"`
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -164,7 +164,6 @@ func (f *NewReleaseForm) Validate(ctx *macaron.Context, errs binding.Errors) bin
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type EditReleaseForm struct {
 | 
					type EditReleaseForm struct {
 | 
				
			||||||
	Target     string `form:"tag_target" binding:"Required"`
 | 
					 | 
				
			||||||
	Title      string `form:"title" binding:"Required"`
 | 
						Title      string `form:"title" binding:"Required"`
 | 
				
			||||||
	Content    string `form:"content" binding:"Required"`
 | 
						Content    string `form:"content" binding:"Required"`
 | 
				
			||||||
	Draft      string `form:"draft"`
 | 
						Draft      string `form:"draft"`
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1072,7 +1072,8 @@ The register and sign-in page style
 | 
				
			|||||||
  text-overflow: clip;
 | 
					  text-overflow: clip;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#repo-content {
 | 
					#repo-content {
 | 
				
			||||||
  padding: 18px 0;
 | 
					  padding-top: 18px;
 | 
				
			||||||
 | 
					  padding-bottom: 18px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.repo-wide-wrapper {
 | 
					.repo-wide-wrapper {
 | 
				
			||||||
  padding: 18px;
 | 
					  padding: 18px;
 | 
				
			||||||
@@ -1353,31 +1354,54 @@ The register and sign-in page style
 | 
				
			|||||||
#repo-create-cancel {
 | 
					#repo-create-cancel {
 | 
				
			||||||
  margin-left: 4em;
 | 
					  margin-left: 4em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#release-new-target-branch-list,
 | 
				
			||||||
#repo-create-owner-list {
 | 
					#repo-create-owner-list {
 | 
				
			||||||
  top: 30px;
 | 
					  top: 30px;
 | 
				
			||||||
  left: 0;
 | 
					  left: 0;
 | 
				
			||||||
  width: auto;
 | 
					  width: auto;
 | 
				
			||||||
  max-width: 300px;
 | 
					  max-width: 300px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#release-new-target-branch-list .octicon,
 | 
				
			||||||
#repo-create-owner-list .octicon {
 | 
					#repo-create-owner-list .octicon {
 | 
				
			||||||
  margin-right: 12px;
 | 
					  margin-right: 12px;
 | 
				
			||||||
  opacity: 0;
 | 
					  opacity: 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#release-new-target-branch-list .avatar,
 | 
				
			||||||
#repo-create-owner-list .avatar {
 | 
					#repo-create-owner-list .avatar {
 | 
				
			||||||
  width: 20px;
 | 
					  width: 20px;
 | 
				
			||||||
  height: 20px;
 | 
					  height: 20px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#release-new-target-branch-list li,
 | 
				
			||||||
#repo-create-owner-list li {
 | 
					#repo-create-owner-list li {
 | 
				
			||||||
  white-space: nowrap;
 | 
					  white-space: nowrap;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#release-new-target-branch-list li.checked .octicon,
 | 
				
			||||||
#repo-create-owner-list li.checked .octicon {
 | 
					#repo-create-owner-list li.checked .octicon {
 | 
				
			||||||
  opacity: 1;
 | 
					  opacity: 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#release-new-target-branch-list li a,
 | 
				
			||||||
#repo-create-owner-list li a {
 | 
					#repo-create-owner-list li a {
 | 
				
			||||||
  text-overflow: ellipsis;
 | 
					  text-overflow: ellipsis;
 | 
				
			||||||
  -o-text-overflow: ellipsis;
 | 
					  -o-text-overflow: ellipsis;
 | 
				
			||||||
  overflow: hidden;
 | 
					  overflow: hidden;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#release-new-target-branch-list {
 | 
				
			||||||
 | 
					  margin-top: -1px;
 | 
				
			||||||
 | 
					  min-width: 150px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release-new-title {
 | 
				
			||||||
 | 
					  margin-top: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release-new-content {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release-preview-btn .btn {
 | 
				
			||||||
 | 
					  border-left: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release-preview.markdown {
 | 
				
			||||||
 | 
					  margin-top: 5px;
 | 
				
			||||||
 | 
					  background-color: transparent;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
.file-name {
 | 
					.file-name {
 | 
				
			||||||
  margin-left: 1em;
 | 
					  margin-left: 1em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1622,6 +1646,87 @@ The register and sign-in page style
 | 
				
			|||||||
  margin-left: 44px;
 | 
					  margin-left: 44px;
 | 
				
			||||||
  margin-top: -15px;
 | 
					  margin-top: -15px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#release h4 {
 | 
				
			||||||
 | 
					  font-size: 18px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release h4 small {
 | 
				
			||||||
 | 
					  font-weight: 400;
 | 
				
			||||||
 | 
					  line-height: 1;
 | 
				
			||||||
 | 
					  color: #999;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release #release-head {
 | 
				
			||||||
 | 
					  margin-top: 0;
 | 
				
			||||||
 | 
					  margin-bottom: 0;
 | 
				
			||||||
 | 
					  padding-bottom: 20px;
 | 
				
			||||||
 | 
					  border-bottom: 1px solid #DDD;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release #release-head .btn {
 | 
				
			||||||
 | 
					  margin-left: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item > div {
 | 
				
			||||||
 | 
					  padding-top: 20px;
 | 
				
			||||||
 | 
					  padding-bottom: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item .label-green:hover {
 | 
				
			||||||
 | 
					  background-color: #65ad4e;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item .release-meta {
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  float: left;
 | 
				
			||||||
 | 
					  padding-right: 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item .tag,
 | 
				
			||||||
 | 
					#release .release-item .commit {
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  margin-top: 12px;
 | 
				
			||||||
 | 
					  line-height: 20px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item .release-detail {
 | 
				
			||||||
 | 
					  margin-top: -1px;
 | 
				
			||||||
 | 
					  border-left: 1px solid #DDD;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					  float: left;
 | 
				
			||||||
 | 
					  padding-left: 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item .title {
 | 
				
			||||||
 | 
					  line-height: 25px;
 | 
				
			||||||
 | 
					  margin-top: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item p.info {
 | 
				
			||||||
 | 
					  line-height: 20px;
 | 
				
			||||||
 | 
					  color: #666;
 | 
				
			||||||
 | 
					  margin-bottom: 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item p.info > * {
 | 
				
			||||||
 | 
					  margin-right: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item .author img {
 | 
				
			||||||
 | 
					  margin-top: -3px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item div.desc {
 | 
				
			||||||
 | 
					  margin-bottom: 25px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item div.desc.markdown {
 | 
				
			||||||
 | 
					  background-color: transparent;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item .download a {
 | 
				
			||||||
 | 
					  margin-right: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release .release-item .dot {
 | 
				
			||||||
 | 
					  width: 9px;
 | 
				
			||||||
 | 
					  height: 9px;
 | 
				
			||||||
 | 
					  background-color: #ccc;
 | 
				
			||||||
 | 
					  z-index: 999;
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  display: block;
 | 
				
			||||||
 | 
					  left: -6px;
 | 
				
			||||||
 | 
					  top: 27px;
 | 
				
			||||||
 | 
					  border-radius: 6px;
 | 
				
			||||||
 | 
					  border: 1px solid #FFF;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release #release-new-form {
 | 
				
			||||||
 | 
					  padding-top: 15px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
#admin-wrapper,
 | 
					#admin-wrapper,
 | 
				
			||||||
#setting-wrapper {
 | 
					#setting-wrapper {
 | 
				
			||||||
  padding-bottom: 100px;
 | 
					  padding-bottom: 100px;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -379,6 +379,7 @@ dt {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
.btn-large {
 | 
					.btn-large {
 | 
				
			||||||
  font-size: 14.4px;
 | 
					  font-size: 14.4px;
 | 
				
			||||||
 | 
					  padding: .4em .9em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.btn-green {
 | 
					.btn-green {
 | 
				
			||||||
  background-color: #65ad4e;
 | 
					  background-color: #65ad4e;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -403,6 +403,16 @@ function initRepo() {
 | 
				
			|||||||
    $clone_btn.tipsy({
 | 
					    $clone_btn.tipsy({
 | 
				
			||||||
        fade: true
 | 
					        fade: true
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Markdown preview.
 | 
				
			||||||
 | 
					    $('.markdown-preview').click(function() {
 | 
				
			||||||
 | 
					        var $this = $(this);
 | 
				
			||||||
 | 
					        $this.toggleAjax(function (resp) {
 | 
				
			||||||
 | 
					            $($this.data("preview")).html(resp);
 | 
				
			||||||
 | 
					        }, function () {
 | 
				
			||||||
 | 
					            $($this.data("preview")).html("no content");
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// when user changes hook type, hide/show proper divs
 | 
					// when user changes hook type, hide/show proper divs
 | 
				
			||||||
@@ -423,6 +433,13 @@ function initHookTypeChange() {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function initRepoRelease() {
 | 
				
			||||||
 | 
					    $('#release-new-target-branch-list li').click(function() {
 | 
				
			||||||
 | 
					        $('#repo-branch-current').text($(this).text());
 | 
				
			||||||
 | 
					        $('#tag-target').val($(this).text());
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function initRepoSetting() {
 | 
					function initRepoSetting() {
 | 
				
			||||||
    // Options.
 | 
					    // Options.
 | 
				
			||||||
    // Confirmation of changing repository name.
 | 
					    // Confirmation of changing repository name.
 | 
				
			||||||
@@ -753,8 +770,12 @@ $(document).ready(function () {
 | 
				
			|||||||
        initRepoCreate();
 | 
					        initRepoCreate();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if ($('#repo-header').length) {
 | 
					    if ($('#repo-header').length) {
 | 
				
			||||||
 | 
					        initTimeSwitch();
 | 
				
			||||||
        initRepo();
 | 
					        initRepo();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    if ($('#release').length) {
 | 
				
			||||||
 | 
					        initRepoRelease();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    if ($('#repo-setting').length) {
 | 
					    if ($('#repo-setting').length) {
 | 
				
			||||||
        initRepoSetting();
 | 
					        initRepoSetting();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -819,3 +840,7 @@ function homepage() {
 | 
				
			|||||||
        $('#promo-form').attr('action', Gogs.AppSubUrl + '/user/sign_up');
 | 
					        $('#promo-form').attr('action', Gogs.AppSubUrl + '/user/sign_up');
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					String.prototype.endsWith = function (suffix) {
 | 
				
			||||||
 | 
					    return this.indexOf(suffix, this.length - suffix.length) !== -1;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										8
									
								
								public/ng/js/min/gogs-min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								public/ng/js/min/gogs-min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -90,7 +90,8 @@
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#repo-content {
 | 
					#repo-content {
 | 
				
			||||||
    padding: 18px 0;
 | 
					    padding-top: 18px;
 | 
				
			||||||
 | 
					    padding-bottom: 18px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
.repo-wide-wrapper {
 | 
					.repo-wide-wrapper {
 | 
				
			||||||
    padding: 18px;
 | 
					    padding: 18px;
 | 
				
			||||||
@@ -383,6 +384,7 @@
 | 
				
			|||||||
#repo-create-cancel {
 | 
					#repo-create-cancel {
 | 
				
			||||||
    margin-left: 4em;
 | 
					    margin-left: 4em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#release-new-target-branch-list,
 | 
				
			||||||
#repo-create-owner-list {
 | 
					#repo-create-owner-list {
 | 
				
			||||||
    top: 30px;
 | 
					    top: 30px;
 | 
				
			||||||
    left: 0;
 | 
					    left: 0;
 | 
				
			||||||
@@ -410,6 +412,23 @@
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#release-new-target-branch-list {
 | 
				
			||||||
 | 
					    margin-top: -1px;
 | 
				
			||||||
 | 
					    min-width: 150px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release-new-title {
 | 
				
			||||||
 | 
					    margin-top: 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release-new-content {
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release-preview-btn .btn {
 | 
				
			||||||
 | 
					    border-left: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#release-preview.markdown {
 | 
				
			||||||
 | 
					    margin-top: 5px;
 | 
				
			||||||
 | 
					    background-color: transparent;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
.file-name {
 | 
					.file-name {
 | 
				
			||||||
    margin-left: 1em;
 | 
					    margin-left: 1em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -666,3 +685,90 @@
 | 
				
			|||||||
    margin-left: 44px;
 | 
					    margin-left: 44px;
 | 
				
			||||||
    margin-top: -15px;
 | 
					    margin-top: -15px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					#release {
 | 
				
			||||||
 | 
					    h4 {
 | 
				
			||||||
 | 
					        font-size: 18px;
 | 
				
			||||||
 | 
					        small {
 | 
				
			||||||
 | 
					            font-weight: 400;
 | 
				
			||||||
 | 
					            line-height: 1;
 | 
				
			||||||
 | 
					            color: #999;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    #release-head {
 | 
				
			||||||
 | 
					        margin-top: 0;
 | 
				
			||||||
 | 
					        margin-bottom: 0;
 | 
				
			||||||
 | 
					        padding-bottom: 20px;
 | 
				
			||||||
 | 
					        border-bottom: 1px solid #DDD;
 | 
				
			||||||
 | 
					        .btn {
 | 
				
			||||||
 | 
					            margin-left: 10px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    .release-item {
 | 
				
			||||||
 | 
					        &>div {
 | 
				
			||||||
 | 
					            padding-top: 20px;
 | 
				
			||||||
 | 
					            padding-bottom: 20px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .label-green:hover {
 | 
				
			||||||
 | 
					            background-color: @labelGreenColor;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .release-meta {
 | 
				
			||||||
 | 
					            position: relative;
 | 
				
			||||||
 | 
					            float: left;
 | 
				
			||||||
 | 
					            padding-right: 15px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .tag, 
 | 
				
			||||||
 | 
					        .commit {
 | 
				
			||||||
 | 
					            display: block;
 | 
				
			||||||
 | 
					            margin-top: 12px;
 | 
				
			||||||
 | 
					            line-height: 20px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .release-detail {
 | 
				
			||||||
 | 
					            margin-top: -1px;
 | 
				
			||||||
 | 
					            border-left: 1px solid #DDD;
 | 
				
			||||||
 | 
					            position: relative;
 | 
				
			||||||
 | 
					            float: left;
 | 
				
			||||||
 | 
					            padding-left: 15px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .title {
 | 
				
			||||||
 | 
					            line-height: 25px;
 | 
				
			||||||
 | 
					            margin-top: 0;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        p.info {
 | 
				
			||||||
 | 
					            line-height: 20px;
 | 
				
			||||||
 | 
					            color: #666;
 | 
				
			||||||
 | 
					            margin-bottom: 15px;
 | 
				
			||||||
 | 
					            >* {
 | 
				
			||||||
 | 
					                margin-right: 10px;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .author {
 | 
				
			||||||
 | 
					            img {
 | 
				
			||||||
 | 
					                margin-top: -3px;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        div.desc {
 | 
				
			||||||
 | 
					            margin-bottom: 25px;
 | 
				
			||||||
 | 
					            &.markdown {
 | 
				
			||||||
 | 
					                background-color: transparent;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .download a {
 | 
				
			||||||
 | 
					            margin-right: 10px;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        .dot {
 | 
				
			||||||
 | 
					            width: 9px;
 | 
				
			||||||
 | 
					            height: 9px;
 | 
				
			||||||
 | 
					            background-color: #ccc;
 | 
				
			||||||
 | 
					            z-index: 999;
 | 
				
			||||||
 | 
					            position: absolute;
 | 
				
			||||||
 | 
					            display: block;
 | 
				
			||||||
 | 
					            left: -6px;
 | 
				
			||||||
 | 
					            top: 27px;
 | 
				
			||||||
 | 
					            border-radius: 6px;
 | 
				
			||||||
 | 
					            border: 1px solid #FFF;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    #release-new-form {
 | 
				
			||||||
 | 
					        padding-top: 15px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,6 +14,7 @@
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
.btn-large {
 | 
					.btn-large {
 | 
				
			||||||
    font-size: 1.2*@baseFontSize;
 | 
					    font-size: 1.2*@baseFontSize;
 | 
				
			||||||
 | 
					    padding: .4em .9em;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.btn-green {
 | 
					.btn-green {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,11 @@ func Markdown(ctx *middleware.Context, form apiv1.MarkdownForm) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(form.Text) == 0 {
 | 
				
			||||||
 | 
							ctx.Write([]byte(""))
 | 
				
			||||||
 | 
							return
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch form.Mode {
 | 
						switch form.Mode {
 | 
				
			||||||
	case "gfm":
 | 
						case "gfm":
 | 
				
			||||||
		ctx.Write(base.RenderMarkdown([]byte(form.Text),
 | 
							ctx.Write(base.RenderMarkdown([]byte(form.Text),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ const (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func Releases(ctx *middleware.Context) {
 | 
					func Releases(ctx *middleware.Context) {
 | 
				
			||||||
	ctx.Data["Title"] = "Releases"
 | 
						ctx.Data["Title"] = ctx.Tr("repo.release.releases")
 | 
				
			||||||
	ctx.Data["IsRepoToolbarReleases"] = true
 | 
						ctx.Data["IsRepoToolbarReleases"] = true
 | 
				
			||||||
	ctx.Data["IsRepoReleaseNew"] = false
 | 
						ctx.Data["IsRepoReleaseNew"] = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -35,35 +35,13 @@ func Releases(ctx *middleware.Context) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get default branch.
 | 
					 | 
				
			||||||
	refName := ctx.Repo.Repository.DefaultBranch
 | 
					 | 
				
			||||||
	if !ctx.Repo.GitRepo.IsBranchExist(refName) {
 | 
					 | 
				
			||||||
		brs, err := ctx.Repo.GitRepo.GetBranches()
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			ctx.Handle(500, "GetBranches", err)
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		refName = brs[0]
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	commit, err := ctx.Repo.GitRepo.GetCommitOfBranch(refName)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		ctx.Handle(500, "GetCommitOfBranch", err)
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	commitsCount, err := commit.CommitsCount()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		ctx.Handle(500, "CommitsCount", err)
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Temproray cache commits count of used branches to speed up.
 | 
						// Temproray cache commits count of used branches to speed up.
 | 
				
			||||||
	countCache := make(map[string]int)
 | 
						countCache := make(map[string]int)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	tags := make([]*models.Release, len(rawTags))
 | 
						tags := make([]*models.Release, len(rawTags))
 | 
				
			||||||
	for i, rawTag := range rawTags {
 | 
						for i, rawTag := range rawTags {
 | 
				
			||||||
		for _, rel := range rels {
 | 
							for j, rel := range rels {
 | 
				
			||||||
			if rel.IsDraft && !ctx.Repo.IsOwner {
 | 
								if rel == nil || (rel.IsDraft && !ctx.Repo.IsOwner) {
 | 
				
			||||||
				continue
 | 
									continue
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if rel.TagName == rawTag {
 | 
								if rel.TagName == rawTag {
 | 
				
			||||||
@@ -72,6 +50,7 @@ func Releases(ctx *middleware.Context) {
 | 
				
			|||||||
					ctx.Handle(500, "GetUserById", err)
 | 
										ctx.Handle(500, "GetUserById", err)
 | 
				
			||||||
					return
 | 
										return
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
									// FIXME: duplicated code.
 | 
				
			||||||
				// Get corresponding target if it's not the current branch.
 | 
									// Get corresponding target if it's not the current branch.
 | 
				
			||||||
				if ctx.Repo.BranchName != rel.Target {
 | 
									if ctx.Repo.BranchName != rel.Target {
 | 
				
			||||||
					// Get count if not exists.
 | 
										// Get count if not exists.
 | 
				
			||||||
@@ -89,11 +68,12 @@ func Releases(ctx *middleware.Context) {
 | 
				
			|||||||
					}
 | 
										}
 | 
				
			||||||
					rel.NumCommitsBehind = countCache[ctx.Repo.BranchName] - rel.NumCommits
 | 
										rel.NumCommitsBehind = countCache[ctx.Repo.BranchName] - rel.NumCommits
 | 
				
			||||||
				} else {
 | 
									} else {
 | 
				
			||||||
					rel.NumCommitsBehind = commitsCount - rel.NumCommits
 | 
										rel.NumCommitsBehind = ctx.Repo.CommitsCount - rel.NumCommits
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				rel.Note = base.RenderMarkdownString(rel.Note, ctx.Repo.RepoLink)
 | 
									rel.Note = base.RenderMarkdownString(rel.Note, ctx.Repo.RepoLink)
 | 
				
			||||||
				tags[i] = rel
 | 
									tags[i] = rel
 | 
				
			||||||
 | 
									rels[j] = nil // Mark as used.
 | 
				
			||||||
				break
 | 
									break
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -116,9 +96,44 @@ func Releases(ctx *middleware.Context) {
 | 
				
			|||||||
				ctx.Handle(500, "CommitsCount", err)
 | 
									ctx.Handle(500, "CommitsCount", err)
 | 
				
			||||||
				return
 | 
									return
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			tags[i].NumCommitsBehind = commitsCount - tags[i].NumCommits
 | 
								tags[i].NumCommitsBehind = ctx.Repo.CommitsCount - tags[i].NumCommits
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, rel := range rels {
 | 
				
			||||||
 | 
							if rel == nil {
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							rel.Publisher, err = models.GetUserById(rel.PublisherId)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								ctx.Handle(500, "GetUserById", err)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							// FIXME: duplicated code.
 | 
				
			||||||
 | 
							// Get corresponding target if it's not the current branch.
 | 
				
			||||||
 | 
							if ctx.Repo.BranchName != rel.Target {
 | 
				
			||||||
 | 
								// Get count if not exists.
 | 
				
			||||||
 | 
								if _, ok := countCache[rel.Target]; !ok {
 | 
				
			||||||
 | 
									commit, err := ctx.Repo.GitRepo.GetCommitOfBranch(ctx.Repo.BranchName)
 | 
				
			||||||
 | 
									if err != nil {
 | 
				
			||||||
 | 
										ctx.Handle(500, "GetCommitOfBranch", err)
 | 
				
			||||||
 | 
										return
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									countCache[ctx.Repo.BranchName], err = commit.CommitsCount()
 | 
				
			||||||
 | 
									if err != nil {
 | 
				
			||||||
 | 
										ctx.Handle(500, "CommitsCount2", err)
 | 
				
			||||||
 | 
										return
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								rel.NumCommitsBehind = countCache[ctx.Repo.BranchName] - rel.NumCommits
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								rel.NumCommitsBehind = ctx.Repo.CommitsCount - rel.NumCommits
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							rel.Note = base.RenderMarkdownString(rel.Note, ctx.Repo.RepoLink)
 | 
				
			||||||
 | 
							tags = append(tags, rel)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	models.SortReleases(tags)
 | 
						models.SortReleases(tags)
 | 
				
			||||||
	ctx.Data["Releases"] = tags
 | 
						ctx.Data["Releases"] = tags
 | 
				
			||||||
	ctx.HTML(200, RELEASES)
 | 
						ctx.HTML(200, RELEASES)
 | 
				
			||||||
@@ -130,7 +145,8 @@ func NewRelease(ctx *middleware.Context) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctx.Data["Title"] = "New Release"
 | 
						ctx.Data["Title"] = ctx.Tr("repo.release.new_release")
 | 
				
			||||||
 | 
						ctx.Data["tag_target"] = ctx.Repo.Repository.DefaultBranch
 | 
				
			||||||
	ctx.Data["IsRepoToolbarReleases"] = true
 | 
						ctx.Data["IsRepoToolbarReleases"] = true
 | 
				
			||||||
	ctx.Data["IsRepoReleaseNew"] = true
 | 
						ctx.Data["IsRepoReleaseNew"] = true
 | 
				
			||||||
	ctx.HTML(200, RELEASE_NEW)
 | 
						ctx.HTML(200, RELEASE_NEW)
 | 
				
			||||||
@@ -142,7 +158,7 @@ func NewReleasePost(ctx *middleware.Context, form auth.NewReleaseForm) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctx.Data["Title"] = "New Release"
 | 
						ctx.Data["Title"] = ctx.Tr("repo.release.new_release")
 | 
				
			||||||
	ctx.Data["IsRepoToolbarReleases"] = true
 | 
						ctx.Data["IsRepoToolbarReleases"] = true
 | 
				
			||||||
	ctx.Data["IsRepoReleaseNew"] = true
 | 
						ctx.Data["IsRepoReleaseNew"] = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -183,9 +199,9 @@ func NewReleasePost(ctx *middleware.Context, form auth.NewReleaseForm) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if err = models.CreateRelease(ctx.Repo.GitRepo, rel); err != nil {
 | 
						if err = models.CreateRelease(ctx.Repo.GitRepo, rel); err != nil {
 | 
				
			||||||
		if err == models.ErrReleaseAlreadyExist {
 | 
							if err == models.ErrReleaseAlreadyExist {
 | 
				
			||||||
			ctx.RenderWithErr("Release with this tag name has already existed", "release/new", &form)
 | 
								ctx.RenderWithErr(ctx.Tr("repo.release.tag_name_already_exist"), RELEASE_NEW, &form)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			ctx.Handle(500, "release.ReleasesNewPost(IsReleaseExist)", err)
 | 
								ctx.Handle(500, "CreateRelease", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -204,15 +220,15 @@ func EditRelease(ctx *middleware.Context) {
 | 
				
			|||||||
	rel, err := models.GetRelease(ctx.Repo.Repository.Id, tagName)
 | 
						rel, err := models.GetRelease(ctx.Repo.Repository.Id, tagName)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		if err == models.ErrReleaseNotExist {
 | 
							if err == models.ErrReleaseNotExist {
 | 
				
			||||||
			ctx.Handle(404, "release.ReleasesEdit(GetRelease)", err)
 | 
								ctx.Handle(404, "GetRelease", err)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			ctx.Handle(500, "release.ReleasesEdit(GetRelease)", err)
 | 
								ctx.Handle(500, "GetRelease", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ctx.Data["Release"] = rel
 | 
						ctx.Data["Release"] = rel
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctx.Data["Title"] = "Edit Release"
 | 
						ctx.Data["Title"] = ctx.Tr("repo.release.edit_release")
 | 
				
			||||||
	ctx.Data["IsRepoToolbarReleases"] = true
 | 
						ctx.Data["IsRepoToolbarReleases"] = true
 | 
				
			||||||
	ctx.HTML(200, RELEASE_EDIT)
 | 
						ctx.HTML(200, RELEASE_EDIT)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -227,9 +243,9 @@ func EditReleasePost(ctx *middleware.Context, form auth.EditReleaseForm) {
 | 
				
			|||||||
	rel, err := models.GetRelease(ctx.Repo.Repository.Id, tagName)
 | 
						rel, err := models.GetRelease(ctx.Repo.Repository.Id, tagName)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		if err == models.ErrReleaseNotExist {
 | 
							if err == models.ErrReleaseNotExist {
 | 
				
			||||||
			ctx.Handle(404, "release.EditReleasePost(GetRelease)", err)
 | 
								ctx.Handle(404, "GetRelease", err)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			ctx.Handle(500, "release.EditReleasePost(GetRelease)", err)
 | 
								ctx.Handle(500, "GetRelease", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -240,7 +256,7 @@ func EditReleasePost(ctx *middleware.Context, form auth.EditReleaseForm) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctx.Data["Title"] = "Edit Release"
 | 
						ctx.Data["Title"] = ctx.Tr("repo.release.edit_release")
 | 
				
			||||||
	ctx.Data["IsRepoToolbarReleases"] = true
 | 
						ctx.Data["IsRepoToolbarReleases"] = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rel.Title = form.Title
 | 
						rel.Title = form.Title
 | 
				
			||||||
@@ -248,7 +264,7 @@ func EditReleasePost(ctx *middleware.Context, form auth.EditReleaseForm) {
 | 
				
			|||||||
	rel.IsDraft = len(form.Draft) > 0
 | 
						rel.IsDraft = len(form.Draft) > 0
 | 
				
			||||||
	rel.IsPrerelease = form.Prerelease
 | 
						rel.IsPrerelease = form.Prerelease
 | 
				
			||||||
	if err = models.UpdateRelease(ctx.Repo.GitRepo, rel); err != nil {
 | 
						if err = models.UpdateRelease(ctx.Repo.GitRepo, rel); err != nil {
 | 
				
			||||||
		ctx.Handle(500, "release.EditReleasePost(UpdateRelease)", err)
 | 
							ctx.Handle(500, "UpdateRelease", err)
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ctx.Redirect(ctx.Repo.RepoLink + "/releases")
 | 
						ctx.Redirect(ctx.Repo.RepoLink + "/releases")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@
 | 
				
			|||||||
                </li>
 | 
					                </li>
 | 
				
			||||||
                <li id="repo-find-jump" class="repo-jump right">
 | 
					                <li id="repo-find-jump" class="repo-jump right">
 | 
				
			||||||
                    <a href="#">
 | 
					                    <a href="#">
 | 
				
			||||||
                        <button class="btn btn-small btn btn-small btn-gray btn-left-radius"><i class="octicon octicon-list-unordered"></i></button>
 | 
					                        <button class="btn btn-small btn-gray btn-left-radius"><i class="octicon octicon-list-unordered"></i></button>
 | 
				
			||||||
                    </a>
 | 
					                    </a>
 | 
				
			||||||
                </li> -->
 | 
					                </li> -->
 | 
				
			||||||
            </ul>
 | 
					            </ul>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,70 +1,59 @@
 | 
				
			|||||||
{{template "base/head" .}}
 | 
					{{template "ng/base/head" .}}
 | 
				
			||||||
{{template "base/navbar" .}}
 | 
					{{template "ng/base/header" .}}
 | 
				
			||||||
{{template "repo/nav" .}}
 | 
					<div id="repo-wrapper">
 | 
				
			||||||
{{template "repo/toolbar" .}}
 | 
					    {{template "repo/header" .}}
 | 
				
			||||||
<div id="body" class="container">
 | 
					    <div id="repo-content" class="clear container">
 | 
				
			||||||
    <div id="release">
 | 
					        <div id="repo-main" class="left grid-5-6">
 | 
				
			||||||
        <h4 id="release-head">Edit Release</h4>
 | 
					            {{template "ng/base/alert" .}}
 | 
				
			||||||
        {{template "base/alert" .}}
 | 
					            <div id="release">
 | 
				
			||||||
        <form id="release-new-form" action="{{.RepoLink}}/releases/edit/{{.Release.TagName}}" method="post" class="form form-inline">
 | 
					                <h4 id="release-head">{{.i18n.Tr "repo.release.edit_release"}}</h4>
 | 
				
			||||||
            {{.CsrfTokenHtml}}
 | 
					                <form class="form" id="release-new-form" action="{{.RepoLink}}/releases/edit/{{.Release.TagName}}" method="post">
 | 
				
			||||||
            <div class="form-group">
 | 
					                    {{.CsrfTokenHtml}}
 | 
				
			||||||
                <b>{{.Release.TagName}}</b>
 | 
					                    <div class="field">
 | 
				
			||||||
                <span class="target-at">@</span>
 | 
					                        <b>{{.Release.TagName}}</b>
 | 
				
			||||||
                <div class="btn-group" id="release-new-target-select">
 | 
					                        <span class="target-at">@</span>
 | 
				
			||||||
                    <button type="button" class="btn btn-default"><i class="fa fa-code-fork fa-lg fa-m"></i>
 | 
					                        <strong>{{.Repository.DefaultBranch}}</strong>
 | 
				
			||||||
                        <span class="target-text">Target : </span>
 | 
					 | 
				
			||||||
                        <strong id="release-new-target-name"> {{.Release.Target}}</strong>
 | 
					 | 
				
			||||||
                    </button>
 | 
					 | 
				
			||||||
                    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
 | 
					 | 
				
			||||||
                        <span class="caret"></span>
 | 
					 | 
				
			||||||
                    </button>
 | 
					 | 
				
			||||||
                    <div class="dropdown-menu clone-group-btn" id="release-new-target-branch-list">
 | 
					 | 
				
			||||||
                        <ul class="list-group">
 | 
					 | 
				
			||||||
                            {{range .Branches}}
 | 
					 | 
				
			||||||
                            <li class="list-group-item">
 | 
					 | 
				
			||||||
                                <a href="#" rel="{{.}}"><i class="fa fa-code-fork"></i>{{.}}</a>
 | 
					 | 
				
			||||||
                            </li>
 | 
					 | 
				
			||||||
                            {{end}}
 | 
					 | 
				
			||||||
                        </ul>
 | 
					 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                    <input id="tag-target" type="hidden" name="tag_target" value="{{.Release.Target}}"/>
 | 
					                    <div class="field">
 | 
				
			||||||
                </div>
 | 
					                        <input class="ipt ipt-large ipt-radius grid-4-5" id="release-new-title" name="title" placeholder="{{.i18n.Tr "repo.release.release_title"}}" value="{{.Release.Title}}" required>
 | 
				
			||||||
                <p class="help-block">Choose an existing tag, or create a new tag on publish</p>
 | 
					                    </div>
 | 
				
			||||||
            </div>
 | 
					                    <br>
 | 
				
			||||||
            <div class="form-group" style="display: block">
 | 
					                    <div class="field grid-4-5">
 | 
				
			||||||
                <input class="form-control input-lg" id="release-new-title" name="title" type="text" placeholder="release title" value="{{.Release.Title}}" />
 | 
					                        <div class="md-help pull-right">
 | 
				
			||||||
            </div>
 | 
					                            {{.i18n.Tr "repo.release.content_with_md" "https://help.github.com/articles/markdown-basics" | Str2html}}
 | 
				
			||||||
            <div class="form-group col-md-8" style="display: block" id="release-new-content-div">
 | 
					                        </div>
 | 
				
			||||||
                <div class="md-help pull-right">
 | 
					                        <div class="clear">
 | 
				
			||||||
                    Content with <a href="https://help.github.com/articles/markdown-basics">Markdown</a>
 | 
					                            <ul class="tab-nav list-unstyled">
 | 
				
			||||||
                </div>
 | 
					                                <li class="js-tab-nav js-tab-nav-show left" data-tab-target="#release-textarea">
 | 
				
			||||||
                <ul class="nav nav-tabs" data-init="tabs">
 | 
					                                    <button class="btn btn-medium btn-gray btn-left-radius">{{.i18n.Tr "repo.release.write"}}</button>
 | 
				
			||||||
                    <li class="release-write active"><a href="#release-textarea" data-toggle="tab">Write</a></li>
 | 
					                                </li>
 | 
				
			||||||
                    <li class="release-preview"><a href="#release-preview" data-toggle="tab" data-ajax="/api/v1/markdown" data-ajax-name="release-preview" data-ajax-context="{{.RepoLink}}" data-ajax-method="post" data-preview="#release-preview">Preview</a></li>
 | 
					                                <li class="js-tab-nav left markdown-preview" id="release-preview-btn" data-tab-target="#release-preview" data-ajax="/api/v1/markdown" data-ajax-name="release-preview" data-ajax-context="{{.RepoLink}}" data-ajax-method="post" data-preview="#release-preview">
 | 
				
			||||||
                </ul>
 | 
					                                    <button class="btn btn-medium btn-gray btn-right-radius">{{.i18n.Tr "repo.release.preview"}}</button>
 | 
				
			||||||
                <div class="tab-content">
 | 
					                                </li>
 | 
				
			||||||
                    <div class="tab-pane active" id="release-textarea">
 | 
					                            </ul>
 | 
				
			||||||
                        <div class="form-group">
 | 
					                        </div>
 | 
				
			||||||
                            <textarea class="form-control" name="content" id="release-new-content" rows="10" placeholder="Write some content" data-ajax-rel="release-preview" data-ajax-val="val" data-ajax-field="text">{{.Release.Note}}</textarea>
 | 
					                        <div id="release-textarea">
 | 
				
			||||||
 | 
					                            <div class="form-group">
 | 
				
			||||||
 | 
					                                <textarea class="ipt ipt-large ipt-radius" name="content" id="release-new-content" rows="10" placeholder="{{.i18n.Tr "repo.release.content_placeholder"}}" data-ajax-rel="release-preview" data-ajax-val="val" data-ajax-field="text" required>{{.Release.Note}}</textarea>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="markdown hide" id="release-preview">{{.i18n.Tr "repo.release.loading"}}...</div>
 | 
				
			||||||
 | 
					                        <br>
 | 
				
			||||||
 | 
					                        <hr>
 | 
				
			||||||
 | 
					                        <div class="text-right">
 | 
				
			||||||
 | 
					                            <input class="ipt-chk" name="prerelease" type="checkbox" {{if .Release.IsPrerelease}}checked{{end}}/>
 | 
				
			||||||
 | 
					                            <span><strong>{{.i18n.Tr "repo.release.prerelease_desc"}}</strong></span>
 | 
				
			||||||
 | 
					                            <p>{{.i18n.Tr "repo.release.prerelease_helper"}}</p>
 | 
				
			||||||
 | 
					                            <button class="btn btn-large btn-green btn-radius">Publish release</button>
 | 
				
			||||||
 | 
					                            {{if .Release.IsDraft}}
 | 
				
			||||||
 | 
					                            <input class="btn btn-large btn-gary btn-radius" type="submit" name="draft" value="{{.i18n.Tr "repo.release.save_draft"}}"/>
 | 
				
			||||||
 | 
					                            {{end}}
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                    <div class="tab-pane release-preview-content" id="release-preview">loading...</div>
 | 
					                </form>
 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="text-right form-group col-md-8" style="display: block">
 | 
					        </div>
 | 
				
			||||||
                <hr/>
 | 
					        {{template "repo/sidebar" .}}
 | 
				
			||||||
                <label for="release-new-pre-release">
 | 
					 | 
				
			||||||
                    <input id="release-new-pre-release" type="checkbox" name="prerelease" {{if .Release.IsPrerelease}}checked{{end}}/>
 | 
					 | 
				
			||||||
                    <strong>This is a pre-release</strong>
 | 
					 | 
				
			||||||
                </label>
 | 
					 | 
				
			||||||
                <p class="help-block">We’ll point out that this release is identified as non-production ready.</p>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <div class="text-right form-group col-md-8" style="display: block">
 | 
					 | 
				
			||||||
                <button class="btn-success btn">Publish release</button>
 | 
					 | 
				
			||||||
                <input class="btn btn-default" type="submit" name="draft" value="Save draft"/>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
        </form>
 | 
					 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
{{template "base/footer" .}}
 | 
					{{template "ng/base/footer" .}}
 | 
				
			||||||
@@ -1,62 +1,71 @@
 | 
				
			|||||||
{{template "base/head" .}}
 | 
					{{template "ng/base/head" .}}
 | 
				
			||||||
{{template "base/navbar" .}}
 | 
					{{template "ng/base/header" .}}
 | 
				
			||||||
{{template "repo/nav" .}}
 | 
					<div id="repo-wrapper">
 | 
				
			||||||
{{template "repo/toolbar" .}}
 | 
					    {{template "repo/header" .}}
 | 
				
			||||||
<div id="body" class="container">
 | 
					    <div id="repo-content" class="clear container">
 | 
				
			||||||
    <div id="release">
 | 
					        <div id="repo-main" class="left grid-5-6">
 | 
				
			||||||
        <h4 id="release-head">
 | 
					            <div id="release">
 | 
				
			||||||
            <span class="release"><strong>Releases</strong></span><!--  /
 | 
					                <h4 id="release-head">
 | 
				
			||||||
            <a class="tag" href="{{AppSubUrl}}/{tag_link}">Tags</a> -->
 | 
					                    <span class="release"><strong>{{.i18n.Tr "repo.release.releases"}}</strong></span><!--  /
 | 
				
			||||||
            <!-- comment : if in tag page, show a.release and span.tag please -->
 | 
					                    <a class="tag" href="{{AppSubUrl}}/{tag_link}">Tags</a> -->
 | 
				
			||||||
        </h4>
 | 
					                    <!-- comment : if in tag page, show a.release and span.tag please -->
 | 
				
			||||||
        <ul id="release-list" class="list-unstyled">
 | 
					                    <a class="btn" href="{{$.RepoLink}}/releases/new">
 | 
				
			||||||
            {{range .Releases}}
 | 
					                        <button class="btn btn-medium btn-blue btn-radius">
 | 
				
			||||||
            <li class="release-item clearfix" id="release-{{.Sha1}}">
 | 
					                            {{.i18n.Tr "repo.release.new_release"}}
 | 
				
			||||||
                {{if .PublisherId}}
 | 
					                        </button>
 | 
				
			||||||
                <div class="col-md-2 text-right">
 | 
					                    </a>
 | 
				
			||||||
                    {{if .IsDraft}}
 | 
					                </h4>
 | 
				
			||||||
                    <span class="btn btn-primary status pre-release">Draft</span>
 | 
					                <ul id="release-list" class="list-unstyled">
 | 
				
			||||||
                    {{else if .IsPrerelease}}
 | 
					                    {{range .Releases}}
 | 
				
			||||||
                    <span class="btn btn-warning status pre-release">Pre-Release</span>
 | 
					                    <li class="release-item clearfix" id="release-{{.Sha1}}">
 | 
				
			||||||
                    {{else}}
 | 
					                        {{if .PublisherId}}
 | 
				
			||||||
                    <span class="btn btn-success status stable">Stable</span>
 | 
					                        <div class="grid-1-6 text-right release-meta">
 | 
				
			||||||
 | 
					                            {{if .IsDraft}}
 | 
				
			||||||
 | 
					                            <span class="label label-blue label-radius">{{$.i18n.Tr "repo.release.draft"}}</span>
 | 
				
			||||||
 | 
					                            {{else if .IsPrerelease}}
 | 
				
			||||||
 | 
					                            <span class="label label-orange label-radius">{{$.i18n.Tr "repo.release.prerelease"}}</span>
 | 
				
			||||||
 | 
					                            {{else}}
 | 
				
			||||||
 | 
					                            <span class="label label-green label-radius">{{$.i18n.Tr "repo.release.stable"}}</span>
 | 
				
			||||||
 | 
					                            {{end}}
 | 
				
			||||||
 | 
					                            <a class="tag" href="{{$.RepoLink}}/src/{{.TagName}}" rel="nofollow"><i class="fa fa-tag"></i> {{.TagName}}</a>
 | 
				
			||||||
 | 
					                            <a class="commit" href="{{$.RepoLink}}/src/{{.Sha1}}" rel="nofollow"><i class="fa fa-code"></i> {{ShortSha .Sha1}}</a>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="grid-9-12 release-detail left">
 | 
				
			||||||
 | 
					                            <h4 class="title"><a href="{{$.RepoLink}}/src/{{.TagName}}">{{.Title}}</a> <small>(<a href="{{$.RepoLink}}/releases/edit/{{.TagName}}" rel="nofollow">{{$.i18n.Tr "repo.release.edit"}}</a>)</small></h4>
 | 
				
			||||||
 | 
					                            <p class="info">
 | 
				
			||||||
 | 
					                                <span class="author"><img class="avatar-20" src="{{.Publisher.AvatarLink}}">  
 | 
				
			||||||
 | 
					                                <a href="{{AppSubUrl}}/{{.Publisher.Name}}">{{.Publisher.Name}}</a></span>
 | 
				
			||||||
 | 
					                                {{if .Created}}<span class="time">{{TimeSince .Created $.Lang}}</span>{{end}}
 | 
				
			||||||
 | 
					                                <span class="ahead">{{$.i18n.Tr "repo.release.ahead" .NumCommitsBehind .Target | Str2html}}</span>
 | 
				
			||||||
 | 
					                            </p>
 | 
				
			||||||
 | 
					                            <div class="markdown desc">
 | 
				
			||||||
 | 
					                                {{str2html .Note}}
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                            <p class="download">
 | 
				
			||||||
 | 
					                                <a class="btn btn-gray btn-large btn-radius" href="{{$.RepoLink}}/archive/{{.TagName}}.zip" rel="nofollow"><i class="fa fa-download"></i> {{$.i18n.Tr "repo.release.source_code"}} (ZIP)</a>
 | 
				
			||||||
 | 
					                                <a class="btn btn-gray btn-large btn-radius" href="{{$.RepoLink}}/archive/{{.TagName}}.tar.gz"><i class="fa fa-download"></i> {{$.i18n.Tr "repo.release.source_code"}} (TAR.GZ)</a>
 | 
				
			||||||
 | 
					                            </p>
 | 
				
			||||||
 | 
					                            <span class="dot"> </span>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        {{else}}
 | 
				
			||||||
 | 
					                        <div class="grid-1-6 text-right release-meta">
 | 
				
			||||||
 | 
					                            <a class="commit" href="{{$.RepoLink}}/src/{{.Sha1}}" rel="nofollow"><i class="fa fa-code"></i> {{ShortSha .Sha1}}</a>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="grid-9-12 release-detail left">
 | 
				
			||||||
 | 
					                            <h5 class="title"><a href="{{$.RepoLink}}/src/{{.TagName}}" rel="nofollow">{{.TagName}}</a> <i class="fa fa-tag"></i></h5>
 | 
				
			||||||
 | 
					                            <p class="download">
 | 
				
			||||||
 | 
					                                <a class="download-link" href="{{$.RepoLink}}/archive/{{.TagName}}.zip" rel="nofollow"><i class="fa fa-download"></i> ZIP</a>
 | 
				
			||||||
 | 
					                                <a class="download-link" href="{{$.RepoLink}}/archive/{{.TagName}}.tar.gz"><i class="fa fa-download"></i> TAR.GZ</a>
 | 
				
			||||||
 | 
					                            </p>
 | 
				
			||||||
 | 
					                            <span class="dot"> </span>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        {{end}}
 | 
				
			||||||
 | 
					                    </li>
 | 
				
			||||||
                    {{end}}
 | 
					                    {{end}}
 | 
				
			||||||
                    <a class="tag" href="{{$.RepoLink}}/src/{{.TagName}}" rel="nofollow"><i class="fa fa-tag"></i>{{.TagName}}</a>
 | 
					                </ul>
 | 
				
			||||||
                    <a class="commit" href="{{$.RepoLink}}/src/{{.Sha1}}" rel="nofollow"><i class="fa fa-code"></i>{{ShortSha .Sha1}}</a>
 | 
					            </div>
 | 
				
			||||||
                </div>
 | 
					        </div>
 | 
				
			||||||
                <div class="col-md-10">
 | 
					        {{template "repo/sidebar" .}}
 | 
				
			||||||
                    <h4 class="title"><a href="{{$.RepoLink}}/src/{{.TagName}}">{{.Title}}</a> <small>(<a href="{{$.RepoLink}}/releases/edit/{{.TagName}}" rel="nofollow">edit</a>)</small></h4>
 | 
					 | 
				
			||||||
                    <p class="info">
 | 
					 | 
				
			||||||
                        <span class="author"><img class="avatar" src="{{.Publisher.AvatarLink}}" alt="" width="20">  
 | 
					 | 
				
			||||||
                        <a href="{{AppSubUrl}}/{{.Publisher.Name}}">{{.Publisher.Name}}</a></span>
 | 
					 | 
				
			||||||
                        {{if .Created}}<span class="time">{{TimeSince .Created $.Lang}}</span>{{end}}
 | 
					 | 
				
			||||||
                        <span class="ahead"><strong>{{.NumCommitsBehind}}</strong> commits to {{.Target}} since this release</span>
 | 
					 | 
				
			||||||
                    </p>
 | 
					 | 
				
			||||||
                    <div class="markdown desc">
 | 
					 | 
				
			||||||
                        {{str2html .Note}}
 | 
					 | 
				
			||||||
                    </div>
 | 
					 | 
				
			||||||
                    <p class="download">
 | 
					 | 
				
			||||||
                        <a class="btn btn-default" href="{{$.RepoLink}}/archive/{{.TagName}}.zip" rel="nofollow"><i class="fa fa-download"></i>Source Code (ZIP)</a>
 | 
					 | 
				
			||||||
                        <a class="btn btn-default" href="{{$.RepoLink}}/archive/{{.TagName}}.tar.gz"><i class="fa fa-download"></i>Source Code (TAR.GZ)</a>
 | 
					 | 
				
			||||||
                    </p>
 | 
					 | 
				
			||||||
                    <span class="dot"> </span>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                {{else}}
 | 
					 | 
				
			||||||
                <div class="col-md-2 text-right">
 | 
					 | 
				
			||||||
                    <a class="commit" href="{{$.RepoLink}}/src/{{.Sha1}}" rel="nofollow"><i class="fa fa-code"></i>{{ShortSha .Sha1}}</a>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                <div class="col-md-10">
 | 
					 | 
				
			||||||
                    <h5 class="title"><a href="{{$.RepoLink}}/src/{{.TagName}}" rel="nofollow">{{.TagName}}</a><i class="fa fa-tag"></i></h5>
 | 
					 | 
				
			||||||
                    <p class="download">
 | 
					 | 
				
			||||||
                        <a class="download-link" href="{{$.RepoLink}}/archive/{{.TagName}}.zip" rel="nofollow"><i class="fa fa-download"></i>zip</a>
 | 
					 | 
				
			||||||
                        <a class="download-link" href="{{$.RepoLink}}/archive/{{.TagName}}.tar.gz"><i class="fa fa-download"></i>tar.gz</a>
 | 
					 | 
				
			||||||
                    </p>
 | 
					 | 
				
			||||||
                    <span class="dot"> </span>
 | 
					 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
                {{end}}
 | 
					 | 
				
			||||||
            </li>
 | 
					 | 
				
			||||||
            {{end}}
 | 
					 | 
				
			||||||
        </ul>
 | 
					 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
{{template "base/footer" .}}
 | 
					{{template "ng/base/footer" .}}
 | 
				
			||||||
@@ -1,70 +1,68 @@
 | 
				
			|||||||
{{template "base/head" .}}
 | 
					{{template "ng/base/head" .}}
 | 
				
			||||||
{{template "base/navbar" .}}
 | 
					{{template "ng/base/header" .}}
 | 
				
			||||||
{{template "repo/nav" .}}
 | 
					<div id="repo-wrapper">
 | 
				
			||||||
{{template "repo/toolbar" .}}
 | 
					    {{template "repo/header" .}}
 | 
				
			||||||
<div id="body" class="container">
 | 
					    <div id="repo-content" class="clear container">
 | 
				
			||||||
    <div id="release">
 | 
					        <div id="repo-main" class="left grid-5-6">
 | 
				
			||||||
        <h4 id="release-head">New Release</h4>
 | 
					            {{template "ng/base/alert" .}}
 | 
				
			||||||
        {{template "base/alert" .}}
 | 
					            <div id="release">
 | 
				
			||||||
        <form id="release-new-form" action="{{.RepoLink}}/releases/new" method="post" class="form form-inline">
 | 
					                <h4 id="release-head">{{.i18n.Tr "repo.release.new_release"}}</h4>
 | 
				
			||||||
            {{.CsrfTokenHtml}}
 | 
					                <form class="form" id="release-new-form" action="{{.RepoLink}}/releases/new" method="post">
 | 
				
			||||||
            <div class="form-group">
 | 
					                    {{.CsrfTokenHtml}}
 | 
				
			||||||
                <input id="tag-name" name="tag_name" type="text" class="form-control" placeholder="tag name" value="{{.tag_name}}" />
 | 
					                    <div class="field">
 | 
				
			||||||
                <span class="target-at">@</span>
 | 
					                        <input class="ipt ipt-large ipt-radius" name="tag_name" value="{{.tag_name}}" placeholder="{{.i18n.Tr "repo.release.tag_name"}}" required>
 | 
				
			||||||
                <div class="btn-group" id="release-new-target-select">
 | 
					                        <span class="target-at">@</span>
 | 
				
			||||||
                    <button type="button" class="btn btn-default"><i class="fa fa-code-fork fa-lg fa-m"></i>
 | 
					                        <div class="inline-block drop">
 | 
				
			||||||
                        <span class="target-text">Target : </span>
 | 
					                            <button class="btn btn-gray btn-medium btn-radius drop-bottom">
 | 
				
			||||||
                        <strong id="release-new-target-name"> {{.Repository.DefaultBranch}}</strong>
 | 
					                                <i class="octicon octicon-git-branch"></i> {{.i18n.Tr "repo.release.target"}} :
 | 
				
			||||||
                    </button>
 | 
					                                <strong id="repo-branch-current">{{.Repository.DefaultBranch}}</strong>
 | 
				
			||||||
                    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
 | 
					                            </button>
 | 
				
			||||||
                        <span class="caret"></span>
 | 
					                            <ul class="drop-down menu menu-vertical menu-radius switching-list" id="release-new-target-branch-list">
 | 
				
			||||||
                    </button>
 | 
					                                {{range .Branches}}
 | 
				
			||||||
                    <div class="dropdown-menu clone-group-btn" id="release-new-target-branch-list">
 | 
					                                <li {{if eq . $.tag_target}}class="checked"{{end}}><a><i class="octicon octicon-check"></i>{{.}}</a></li>
 | 
				
			||||||
                        <ul class="list-group">
 | 
					                                {{end}}
 | 
				
			||||||
                            {{range .Branches}}
 | 
					                            </ul>
 | 
				
			||||||
                            <li class="list-group-item">
 | 
					                        </div>
 | 
				
			||||||
                                <a href="#" rel="{{.}}"><i class="fa fa-code-fork"></i>{{.}}</a>
 | 
					                        <input id="tag-target" type="hidden" name="tag_target" value="{{.tag_target}}"/>
 | 
				
			||||||
                            </li>
 | 
					 | 
				
			||||||
                            {{end}}
 | 
					 | 
				
			||||||
                        </ul>
 | 
					 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                    <input id="tag-target" type="hidden" name="tag_target" value="{{.Repository.DefaultBranch}}"/>
 | 
					                    <p class="help">{{.i18n.Tr "repo.release.tag_helper"}}</p>
 | 
				
			||||||
                </div>
 | 
					                    <div class="field">
 | 
				
			||||||
                <p class="help-block">Choose an existing tag, or create a new tag on publish</p>
 | 
					                        <input class="ipt ipt-large ipt-radius grid-4-5" id="release-new-title" name="title" placeholder="{{.i18n.Tr "repo.release.release_title"}}" value="{{.title}}" required>
 | 
				
			||||||
            </div>
 | 
					                    </div>
 | 
				
			||||||
            <div class="form-group" style="display: block">
 | 
					                    <br>
 | 
				
			||||||
                <input class="form-control input-lg" id="release-new-title" name="title" type="text" placeholder="release title" value="{{.title}}" />
 | 
					                    <div class="field grid-4-5">
 | 
				
			||||||
            </div>
 | 
					                        <div class="md-help pull-right">
 | 
				
			||||||
            <div class="form-group col-md-8" style="display: block" id="release-new-content-div">
 | 
					                            {{.i18n.Tr "repo.release.content_with_md" "https://help.github.com/articles/markdown-basics" | Str2html}}
 | 
				
			||||||
                <div class="md-help pull-right">
 | 
					                        </div>
 | 
				
			||||||
                    Content with <a href="https://help.github.com/articles/markdown-basics">Markdown</a>
 | 
					                        <div class="clear">
 | 
				
			||||||
                </div>
 | 
					                            <ul class="tab-nav list-unstyled">
 | 
				
			||||||
                <ul class="nav nav-tabs" data-init="tabs">
 | 
					                                <li class="js-tab-nav js-tab-nav-show left" data-tab-target="#release-textarea">
 | 
				
			||||||
                    <li class="release-write active"><a href="#release-textarea" data-toggle="tab">Write</a></li>
 | 
					                                    <button class="btn btn-medium btn-gray btn-left-radius">{{.i18n.Tr "repo.release.write"}}</button>
 | 
				
			||||||
                    <li class="release-preview"><a href="#release-preview" data-toggle="tab" data-ajax="/api/v1/markdown" data-ajax-name="release-preview" data-ajax-context="{{.RepoLink}}" data-ajax-method="post" data-preview="#release-preview">Preview</a></li>
 | 
					                                </li>
 | 
				
			||||||
                </ul>
 | 
					                                <li class="js-tab-nav left markdown-preview" id="release-preview-btn" data-tab-target="#release-preview" data-ajax="/api/v1/markdown" data-ajax-name="release-preview" data-ajax-context="{{.RepoLink}}" data-ajax-method="post" data-preview="#release-preview">
 | 
				
			||||||
                <div class="tab-content">
 | 
					                                    <button class="btn btn-medium btn-gray btn-right-radius">{{.i18n.Tr "repo.release.preview"}}</button>
 | 
				
			||||||
                    <div class="tab-pane active" id="release-textarea">
 | 
					                                </li>
 | 
				
			||||||
                        <div class="form-group">
 | 
					                            </ul>
 | 
				
			||||||
                            <textarea class="form-control" name="content" id="release-new-content" rows="10" placeholder="Write some content" data-ajax-rel="release-preview" data-ajax-val="val" data-ajax-field="text">{{.content}}</textarea>
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div id="release-textarea">
 | 
				
			||||||
 | 
					                            <div class="form-group">
 | 
				
			||||||
 | 
					                                <textarea class="ipt ipt-large ipt-radius" name="content" id="release-new-content" rows="10" placeholder="{{.i18n.Tr "repo.release.content_placeholder"}}" data-ajax-rel="release-preview" data-ajax-val="val" data-ajax-field="text" required>{{.content}}</textarea>
 | 
				
			||||||
 | 
					                            </div>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
 | 
					                        <div class="markdown hide" id="release-preview">{{.i18n.Tr "repo.release.loading"}}...</div>
 | 
				
			||||||
 | 
					                        <hr>
 | 
				
			||||||
 | 
					                        <div class="text-right">
 | 
				
			||||||
 | 
					                            <input class="ipt-chk" name="prerelease" type="checkbox" {{if .prerelease}}checked{{end}}/>
 | 
				
			||||||
 | 
					                            <span><strong>{{.i18n.Tr "repo.release.prerelease_desc"}}</strong></span>
 | 
				
			||||||
 | 
					                            <p>{{.i18n.Tr "repo.release.prerelease_helper"}}</p>
 | 
				
			||||||
 | 
					                            <button class="btn btn-large btn-green btn-radius">{{.i18n.Tr "repo.release.publish"}}</button>
 | 
				
			||||||
 | 
					                            <input class="btn btn-large btn-gary btn-radius" type="submit" name="draft" value="{{.i18n.Tr "repo.release.save_draft"}}"/>
 | 
				
			||||||
                        </div>
 | 
					                        </div>
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                    <div class="tab-pane release-preview-content" id="release-preview">loading...</div>
 | 
					                </form>
 | 
				
			||||||
                </div>
 | 
					 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div class="text-right form-group col-md-8" style="display: block">
 | 
					        </div>
 | 
				
			||||||
                <hr/>
 | 
					        {{template "repo/sidebar" .}}
 | 
				
			||||||
                <label for="release-new-pre-release">
 | 
					 | 
				
			||||||
                    <input id="release-new-pre-release" type="checkbox" name="prerelease" {{if .prerelease}}checked{{end}}/>
 | 
					 | 
				
			||||||
                    <strong>This is a pre-release</strong>
 | 
					 | 
				
			||||||
                </label>
 | 
					 | 
				
			||||||
                <p class="help-block">We’ll point out that this release is identified as non-production ready.</p>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
            <div class="text-right form-group col-md-8" style="display: block">
 | 
					 | 
				
			||||||
                <button class="btn-success btn">Publish release</button>
 | 
					 | 
				
			||||||
                <input class="btn btn-default" type="submit" name="draft" value="Save draft"/>
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
        </form>
 | 
					 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
{{template "base/footer" .}}
 | 
					{{template "ng/base/footer" .}}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user