mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-06 23:16:52 +02:00
UI: basic label list
- create new label
This commit is contained in:
1 parent
86dbda0b42
commit
ac95f6d50f
27 files changed
+3686
-166
No files matched your search
@@ -29,7 +29,6 @@ profile/
|
|||||||
__pycache__
|
__pycache__
|
||||||
*.pem
|
*.pem
|
||||||
output*
|
output*
|
||||||
config.codekit
|
|
||||||
.brackets.json
|
.brackets.json
|
||||||
docker/fig.yml
|
docker/fig.yml
|
||||||
docker/docker/Dockerfile
|
docker/docker/Dockerfile
|
||||||
|
|||||||
+3
-4
@@ -80,7 +80,7 @@ func checkVersion() {
|
|||||||
// Check dependency version.
|
// Check dependency version.
|
||||||
checkers := []VerChecker{
|
checkers := []VerChecker{
|
||||||
{"github.com/Unknwon/macaron", macaron.Version, "0.5.4"},
|
{"github.com/Unknwon/macaron", macaron.Version, "0.5.4"},
|
||||||
{"github.com/macaron-contrib/binding", binding.Version, "0.0.6"},
|
{"github.com/macaron-contrib/binding", binding.Version, "0.1.0"},
|
||||||
{"github.com/macaron-contrib/cache", cache.Version, "0.0.7"},
|
{"github.com/macaron-contrib/cache", cache.Version, "0.0.7"},
|
||||||
{"github.com/macaron-contrib/csrf", csrf.Version, "0.0.3"},
|
{"github.com/macaron-contrib/csrf", csrf.Version, "0.0.3"},
|
||||||
{"github.com/macaron-contrib/i18n", i18n.Version, "0.0.7"},
|
{"github.com/macaron-contrib/i18n", i18n.Version, "0.0.7"},
|
||||||
@@ -442,15 +442,14 @@ func runWeb(ctx *cli.Context) {
|
|||||||
|
|
||||||
m.Group("/:username/:reponame", func() {
|
m.Group("/:username/:reponame", func() {
|
||||||
m.Get("/releases", middleware.RepoRef(), repo.Releases)
|
m.Get("/releases", middleware.RepoRef(), repo.Releases)
|
||||||
m.Get("/issues", repo.Issues)
|
m.Get("/issues", repo.RetrieveLabels, repo.Issues)
|
||||||
m.Get("/issues/:index", repo.ViewIssue)
|
m.Get("/issues/:index", repo.ViewIssue)
|
||||||
|
m.Get("/labels/", repo.RetrieveLabels, repo.Labels)
|
||||||
m.Get("/milestones", repo.Milestones)
|
m.Get("/milestones", repo.Milestones)
|
||||||
m.Get("/pulls", repo.Pulls)
|
m.Get("/pulls", repo.Pulls)
|
||||||
m.Get("/branches", repo.Branches)
|
m.Get("/branches", repo.Branches)
|
||||||
m.Get("/archive/*", repo.Download)
|
m.Get("/archive/*", repo.Download)
|
||||||
m.Get("/issues2/", repo.Issues2)
|
|
||||||
m.Get("/pulls2/", repo.PullRequest2)
|
m.Get("/pulls2/", repo.PullRequest2)
|
||||||
m.Get("/labels2/", repo.Labels2)
|
|
||||||
m.Get("/milestone2/", repo.Milestones2)
|
m.Get("/milestone2/", repo.Milestones2)
|
||||||
|
|
||||||
m.Group("", func() {
|
m.Group("", func() {
|
||||||
|
|||||||
@@ -159,6 +159,7 @@ AdminEmail = Admin E-mail
|
|||||||
require_error = ` cannot be empty.`
|
require_error = ` cannot be empty.`
|
||||||
alpha_dash_error = ` must be valid alpha or numeric or dash(-_) characters.`
|
alpha_dash_error = ` must be valid alpha or numeric or dash(-_) characters.`
|
||||||
alpha_dash_dot_error = ` must be valid alpha or numeric or dash(-_) or dot characters.`
|
alpha_dash_dot_error = ` must be valid alpha or numeric or dash(-_) or dot characters.`
|
||||||
|
size_error = ` must be size %s.`
|
||||||
min_size_error = ` must contain at least %s characters.`
|
min_size_error = ` must contain at least %s characters.`
|
||||||
max_size_error = ` must contain at most %s characters.`
|
max_size_error = ` must contain at most %s characters.`
|
||||||
email_error = ` is not a valid e-mail address.`
|
email_error = ` is not a valid e-mail address.`
|
||||||
@@ -358,6 +359,8 @@ commits.older = Older
|
|||||||
commits.newer = Newer
|
commits.newer = Newer
|
||||||
|
|
||||||
issues.new = New Issue
|
issues.new = New Issue
|
||||||
|
issues.new_label = New Label
|
||||||
|
issues.new_label_placeholder = Label name...
|
||||||
issues.open_tab = %d Open
|
issues.open_tab = %d Open
|
||||||
issues.close_tab = %d Closed
|
issues.close_tab = %d Closed
|
||||||
issues.filter_label = Label
|
issues.filter_label = Label
|
||||||
@@ -369,6 +372,12 @@ issues.filter_type.assigned_to_you = Assigned to you
|
|||||||
issues.filter_type.created_by_you = Created by you
|
issues.filter_type.created_by_you = Created by you
|
||||||
issues.filter_type.mentioning_you = Mentioning you
|
issues.filter_type.mentioning_you = Mentioning you
|
||||||
issues.opened_by = opened %s by <a href="/%[2]s">%[2]s</a>
|
issues.opened_by = opened %s by <a href="/%[2]s">%[2]s</a>
|
||||||
|
issues.label_title = Label name
|
||||||
|
issues.label_color = Label color
|
||||||
|
issues.label_count = %d labels
|
||||||
|
issues.label_open_issues = %d open issues
|
||||||
|
issues.label_edit = Edit
|
||||||
|
issues.label_delete = Delete
|
||||||
issues.previous = Previous Page
|
issues.previous = Previous Page
|
||||||
issues.next = Next Page
|
issues.next = Next Page
|
||||||
|
|
||||||
|
|||||||
+1989
File diff suppressed because it is too large.
Load diff
@@ -17,7 +17,7 @@ import (
|
|||||||
"github.com/gogits/gogs/modules/setting"
|
"github.com/gogits/gogs/modules/setting"
|
||||||
)
|
)
|
||||||
|
|
||||||
const APP_VER = "0.6.1.0724 Beta"
|
const APP_VER = "0.6.2.0724 Beta"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||||
|
|||||||
+5
-5
@@ -153,7 +153,7 @@ func updateIssuesCommit(userId, repoId int64, repoUserName, repoName string, com
|
|||||||
|
|
||||||
url := fmt.Sprintf("%s/%s/%s/commit/%s", setting.AppSubUrl, repoUserName, repoName, c.Sha1)
|
url := fmt.Sprintf("%s/%s/%s/commit/%s", setting.AppSubUrl, repoUserName, repoName, c.Sha1)
|
||||||
message := fmt.Sprintf(`<a href="%s">%s</a>`, url, c.Message)
|
message := fmt.Sprintf(`<a href="%s">%s</a>`, url, c.Message)
|
||||||
if _, err = CreateComment(userId, issue.RepoId, issue.Id, 0, 0, COMMENT_TYPE_COMMIT, message, nil); err != nil {
|
if _, err = CreateComment(userId, issue.RepoId, issue.ID, 0, 0, COMMENT_TYPE_COMMIT, message, nil); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -202,7 +202,7 @@ func updateIssuesCommit(userId, repoId int64, repoUserName, repoName string, com
|
|||||||
|
|
||||||
if err = UpdateIssue(issue); err != nil {
|
if err = UpdateIssue(issue); err != nil {
|
||||||
return err
|
return err
|
||||||
} else if err = UpdateIssueUserPairsByStatus(issue.Id, issue.IsClosed); err != nil {
|
} else if err = UpdateIssueUserPairsByStatus(issue.ID, issue.IsClosed); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -211,7 +211,7 @@ func updateIssuesCommit(userId, repoId int64, repoUserName, repoName string, com
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If commit happened in the referenced repository, it means the issue can be closed.
|
// If commit happened in the referenced repository, it means the issue can be closed.
|
||||||
if _, err = CreateComment(userId, repoId, issue.Id, 0, 0, COMMENT_TYPE_CLOSE, "", nil); err != nil {
|
if _, err = CreateComment(userId, repoId, issue.ID, 0, 0, COMMENT_TYPE_CLOSE, "", nil); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -261,7 +261,7 @@ func updateIssuesCommit(userId, repoId int64, repoUserName, repoName string, com
|
|||||||
|
|
||||||
if err = UpdateIssue(issue); err != nil {
|
if err = UpdateIssue(issue); err != nil {
|
||||||
return err
|
return err
|
||||||
} else if err = UpdateIssueUserPairsByStatus(issue.Id, issue.IsClosed); err != nil {
|
} else if err = UpdateIssueUserPairsByStatus(issue.ID, issue.IsClosed); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,7 +270,7 @@ func updateIssuesCommit(userId, repoId int64, repoUserName, repoName string, com
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If commit happened in the referenced repository, it means the issue can be closed.
|
// If commit happened in the referenced repository, it means the issue can be closed.
|
||||||
if _, err = CreateComment(userId, repoId, issue.Id, 0, 0, COMMENT_TYPE_REOPEN, "", nil); err != nil {
|
if _, err = CreateComment(userId, repoId, issue.ID, 0, 0, COMMENT_TYPE_REOPEN, "", nil); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-12
@@ -32,7 +32,7 @@ var (
|
|||||||
|
|
||||||
// Issue represents an issue or pull request of repository.
|
// Issue represents an issue or pull request of repository.
|
||||||
type Issue struct {
|
type Issue struct {
|
||||||
Id int64
|
ID int64 `xorm:"pk autoincr"`
|
||||||
RepoId int64 `xorm:"INDEX"`
|
RepoId int64 `xorm:"INDEX"`
|
||||||
Index int64 // Index in one repository.
|
Index int64 // Index in one repository.
|
||||||
Name string
|
Name string
|
||||||
@@ -100,15 +100,15 @@ func (i *Issue) GetAssignee() (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (i *Issue) Attachments() []*Attachment {
|
func (i *Issue) Attachments() []*Attachment {
|
||||||
a, _ := GetAttachmentsForIssue(i.Id)
|
a, _ := GetAttachmentsForIssue(i.ID)
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Issue) AfterDelete() {
|
func (i *Issue) AfterDelete() {
|
||||||
_, err := DeleteAttachmentsByIssue(i.Id, true)
|
_, err := DeleteAttachmentsByIssue(i.ID, true)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Info("Could not delete files for issue #%d: %s", i.Id, err)
|
log.Info("Could not delete files for issue #%d: %s", i.ID, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -175,7 +175,7 @@ func GetIssueByIndex(rid, index int64) (*Issue, error) {
|
|||||||
|
|
||||||
// GetIssueById returns an issue by ID.
|
// GetIssueById returns an issue by ID.
|
||||||
func GetIssueById(id int64) (*Issue, error) {
|
func GetIssueById(id int64) (*Issue, error) {
|
||||||
issue := &Issue{Id: id}
|
issue := &Issue{ID: id}
|
||||||
has, err := x.Get(issue)
|
has, err := x.Get(issue)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -456,7 +456,7 @@ func GetUserIssueStats(uid int64, filterMode int) *IssueStats {
|
|||||||
|
|
||||||
// UpdateIssue updates information of issue.
|
// UpdateIssue updates information of issue.
|
||||||
func UpdateIssue(issue *Issue) error {
|
func UpdateIssue(issue *Issue) error {
|
||||||
_, err := x.Id(issue.Id).AllCols().Update(issue)
|
_, err := x.Id(issue.ID).AllCols().Update(issue)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -526,7 +526,7 @@ func UpdateIssueUserPairsByMentions(uids []int64, iid int64) error {
|
|||||||
|
|
||||||
// Label represents a label of repository for issues.
|
// Label represents a label of repository for issues.
|
||||||
type Label struct {
|
type Label struct {
|
||||||
Id int64
|
ID int64 `xorm:"pk autoincr"`
|
||||||
RepoId int64 `xorm:"INDEX"`
|
RepoId int64 `xorm:"INDEX"`
|
||||||
Name string
|
Name string
|
||||||
Color string `xorm:"VARCHAR(7)"`
|
Color string `xorm:"VARCHAR(7)"`
|
||||||
@@ -553,7 +553,7 @@ func GetLabelById(id int64) (*Label, error) {
|
|||||||
return nil, ErrLabelNotExist
|
return nil, ErrLabelNotExist
|
||||||
}
|
}
|
||||||
|
|
||||||
l := &Label{Id: id}
|
l := &Label{ID: id}
|
||||||
has, err := x.Get(l)
|
has, err := x.Get(l)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -572,7 +572,7 @@ func GetLabels(repoId int64) ([]*Label, error) {
|
|||||||
|
|
||||||
// UpdateLabel updates label information.
|
// UpdateLabel updates label information.
|
||||||
func UpdateLabel(l *Label) error {
|
func UpdateLabel(l *Label) error {
|
||||||
_, err := x.Id(l.Id).AllCols().Update(l)
|
_, err := x.Id(l.ID).AllCols().Update(l)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -600,7 +600,7 @@ func DeleteLabel(repoId int64, strId string) error {
|
|||||||
|
|
||||||
for _, issue := range issues {
|
for _, issue := range issues {
|
||||||
issue.LabelIds = strings.Replace(issue.LabelIds, "$"+strId+"|", "", -1)
|
issue.LabelIds = strings.Replace(issue.LabelIds, "$"+strId+"|", "", -1)
|
||||||
if _, err = sess.Id(issue.Id).AllCols().Update(issue); err != nil {
|
if _, err = sess.Id(issue.ID).AllCols().Update(issue); err != nil {
|
||||||
sess.Rollback()
|
sess.Rollback()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -788,7 +788,7 @@ func ChangeMilestoneAssign(oldMid, mid int64, issue *Issue) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
rawSql := "UPDATE `issue_user` SET milestone_id = 0 WHERE issue_id = ?"
|
rawSql := "UPDATE `issue_user` SET milestone_id = 0 WHERE issue_id = ?"
|
||||||
if _, err = sess.Exec(rawSql, issue.Id); err != nil {
|
if _, err = sess.Exec(rawSql, issue.ID); err != nil {
|
||||||
sess.Rollback()
|
sess.Rollback()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -816,7 +816,7 @@ func ChangeMilestoneAssign(oldMid, mid int64, issue *Issue) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
rawSql := "UPDATE `issue_user` SET milestone_id = ? WHERE issue_id = ?"
|
rawSql := "UPDATE `issue_user` SET milestone_id = ? WHERE issue_id = ?"
|
||||||
if _, err = sess.Exec(rawSql, m.Id, issue.Id); err != nil {
|
if _, err = sess.Exec(rawSql, m.Id, issue.ID); err != nil {
|
||||||
sess.Rollback()
|
sess.Rollback()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -876,7 +876,7 @@ func DeleteRepository(uid, repoID int64, userName string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
for i := range issues {
|
for i := range issues {
|
||||||
if _, err = sess.Delete(&Comment{IssueId: issues[i].Id}); err != nil {
|
if _, err = sess.Delete(&Comment{IssueId: issues[i].ID}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -171,12 +171,16 @@ func AssignForm(form interface{}, data map[string]interface{}) {
|
|||||||
func getSize(field reflect.StructField, prefix string) string {
|
func getSize(field reflect.StructField, prefix string) string {
|
||||||
for _, rule := range strings.Split(field.Tag.Get("binding"), ";") {
|
for _, rule := range strings.Split(field.Tag.Get("binding"), ";") {
|
||||||
if strings.HasPrefix(rule, prefix) {
|
if strings.HasPrefix(rule, prefix) {
|
||||||
return rule[8 : len(rule)-1]
|
return rule[len(prefix) : len(rule)-1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetSize(field reflect.StructField) string {
|
||||||
|
return getSize(field, "Size(")
|
||||||
|
}
|
||||||
|
|
||||||
func GetMinSize(field reflect.StructField) string {
|
func GetMinSize(field reflect.StructField) string {
|
||||||
return getSize(field, "MinSize(")
|
return getSize(field, "MinSize(")
|
||||||
}
|
}
|
||||||
@@ -227,6 +231,8 @@ func validate(errs binding.Errors, data map[string]interface{}, f Form, l macaro
|
|||||||
data["ErrorMsg"] = trName + l.Tr("form.alpha_dash_error")
|
data["ErrorMsg"] = trName + l.Tr("form.alpha_dash_error")
|
||||||
case binding.ERR_ALPHA_DASH_DOT:
|
case binding.ERR_ALPHA_DASH_DOT:
|
||||||
data["ErrorMsg"] = trName + l.Tr("form.alpha_dash_dot_error")
|
data["ErrorMsg"] = trName + l.Tr("form.alpha_dash_dot_error")
|
||||||
|
case binding.ERR_SIZE:
|
||||||
|
data["ErrorMsg"] = trName + l.Tr("form.size_error", GetSize(field))
|
||||||
case binding.ERR_MIN_SIZE:
|
case binding.ERR_MIN_SIZE:
|
||||||
data["ErrorMsg"] = trName + l.Tr("form.min_size_error", GetMinSize(field))
|
data["ErrorMsg"] = trName + l.Tr("form.min_size_error", GetMinSize(field))
|
||||||
case binding.ERR_MAX_SIZE:
|
case binding.ERR_MAX_SIZE:
|
||||||
|
|||||||
@@ -134,8 +134,8 @@ func (f *CreateMilestoneForm) Validate(ctx *macaron.Context, errs binding.Errors
|
|||||||
// \/ \/ \/ \/
|
// \/ \/ \/ \/
|
||||||
|
|
||||||
type CreateLabelForm struct {
|
type CreateLabelForm struct {
|
||||||
Title string `form:"title" binding:"Required;MaxSize(50)"`
|
Title string `binding:"Required;MaxSize(50)" locale:"repo.issues.label_name"`
|
||||||
Color string `form:"color" binding:"Required;Size(7)"`
|
Color string `binding:"Required;Size(7)" locale:"repo.issues.label_color"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *CreateLabelForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {
|
func (f *CreateLabelForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {
|
||||||
|
|||||||
@@ -726,7 +726,7 @@ func confLocaleTranslators() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "conf/locale/TRANSLATORS", size: 606, mode: os.FileMode(420), modTime: time.Unix(1437262032, 0)}
|
info := bindataFileInfo{name: "conf/locale/TRANSLATORS", size: 606, mode: os.FileMode(420), modTime: time.Unix(1437728161, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
@@ -771,7 +771,7 @@ func confLocaleLocale_deDeIni() (*asset, error) {
|
|||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var _confLocaleLocale_enUsIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xc4\x7d\xeb\x72\xdc\x48\xb2\xde\x7f\x3c\x05\x66\x1c\xb2\x66\x22\xa8\x56\xcc\x4c\xd8\xe1\x98\x90\x34\xe6\x90\xa3\xcb\x1e\x51\xd4\x11\xa9\x5d\x1f\x2b\x14\x58\x74\x03\xec\xc6\xb2\x1b\xe8\xc5\x85\x3d\xdc\x5f\x7e\x0d\xbf\x9e\x9f\xc4\x99\x5f\x66\xd6\x05\x40\x53\xa3\x3d\x0e\x9f\x3f\x64\xa1\x2a\xeb\x96\x95\x95\x95\xb7\xaa\xce\xf7\xfb\xac\x28\xbb\x55\xfa\x3c\x3d\x4d\xf7\x79\x55\x6f\xcb\xae\x4b\xbb\x72\x7b\xf3\x64\xd3\x74\x7d\x59\xa4\xaf\xaa\x9e\xbe\xdb\xbb\x6a\x55\x26\xc9\xa6\xd9\x95\x04\xfa\x9a\xfe\x25\x45\xde\x6d\x96\x4d\xde\x16\x94\x71\x6e\xe9\xa4\xfc\x7d\xbf\x6d\x5a\x06\xfa\x4d\x52\xc9\xa6\xdc\xee\xb9\x0e\xfd\x4b\xba\x6a\x5d\x67\x55\x4d\x9f\x57\x94\x4a\xdf\xd4\x49\xd7\xac\xaa\x7c\x9b\x05\x05\xc8\xb0\xf2\x9f\xd3\x1f\xeb\x22\xbd\xea\xcb\x7d\xfa\xac\xdb\xe5\xdb\xed\x8b\xbc\x43\x95\xbe\x4c\xf3\xd5\xaa\x19\xea\xfe\xd9\x53\x29\x90\xc6\x9b\xa1\xb7\xd6\x2f\x87\x5e\xf2\x86\xbd\x65\x7d\xdc\x27\x6d\xb9\xae\x68\x62\x2d\x65\x7d\xd0\x64\x72\x28\x97\x5d\xd5\xf3\xa0\xff\x22\xa9\xe4\xae\x6c\xbb\xaa\xe1\xf1\xfc\x59\x52\xc9\x3e\x5f\x33\xc0\x7b\xfa\x97\xf4\xe5\x6e\xbf\xcd\x51\xe1\x5a\x93\xc9\x36\xaf\xd7\x83\xc0\xbc\xd5\x64\x92\x0c\x84\xb9\x3a\x07\xce\x3e\x6a\x32\x29\x77\x79\xb5\x65\xfc\x3c\xe1\x04\xb5\xdb\x75\x87\x06\x58\x7c\xaf\x49\x1a\x63\xd6\xdf\xef\x4b\x0c\xf1\xc9\x35\xa5\x92\x55\xbe\xef\x57\x9b\x9c\x72\xce\x24\x95\x10\xd0\xbe\xa1\xb1\x36\xed\x3d\xe0\xec\x23\x69\xda\x75\x5e\x57\xff\xc8\x7b\x19\xff\x65\xf0\x99\xec\xaa\xb6\x6d\x78\xea\x17\x48\x24\x75\x79\xc8\xb8\x1d\xca\x79\x57\x1e\xc2\x56\xb8\x64\x57\xad\x5b\x99\x25\x17\x5e\xe0\x8b\x5b\xe1\xb2\x9b\xa6\xbd\xd5\x82\x97\x9c\x1c\x55\xa5\x41\x68\x69\xdc\x7f\x5e\x13\x5e\xb4\xf4\x02\x1f\x11\x40\x97\xe4\xc5\xae\xaa\xb3\x7d\x5e\x97\x8c\xa3\x53\xfe\x22\xbc\xd0\x57\xa2\xcb\x9d\x75\x65\xdf\x57\xf5\xba\xe3\x62\xc9\x4a\xaf\x34\x2b\x09\xca\x5c\x1e\x8f\xa7\xcb\x6e\xca\xb2\x90\x11\x75\xe9\x4b\x4a\x27\xfb\x61\xbb\xa5\xb9\xff\x7d\x28\xbb\x9e\xe1\xdf\xd3\x37\xcd\x42\xbe\x93\xaa\xeb\x28\x41\xd9\x6f\x90\x48\x68\x01\xea\x15\x86\x74\x86\x44\x92\x7c\xea\xca\xbc\x5d\x6d\x3e\x27\xf2\x1f\x3d\x72\x62\xb1\x58\x1c\x5d\x1a\x26\x07\x25\x05\xe9\xc1\x3a\x48\x56\x4d\xc1\x1f\x67\xf4\x8f\x9a\xae\xea\xae\x27\x92\xfe\x9c\x68\x82\xc1\x24\x25\x68\xec\xab\x7e\x5b\xfa\x4c\xec\x8f\x8e\xd7\x21\x7d\x59\xb5\x5d\xff\xa4\xaf\x88\xe4\x3e\x0c\x75\xc2\xf3\x23\x72\xce\x8a\xa5\xed\xf2\x57\x0d\x61\x07\xd9\x2d\xcd\xef\xe2\xfe\xea\x5f\xdf\x9e\xa4\xef\x69\xab\xaf\xdb\x92\xd2\x29\xb5\x41\xff\xa8\xce\x4f\x8b\x84\x6a\x59\x4f\xe7\x79\x9f\x2f\xf3\xae\xf4\x68\xe5\x42\xa1\x51\x57\x06\x4a\x65\xb6\x01\x16\xd1\xf5\xd1\x7c\xe7\xe8\x9c\xda\xd0\xdd\xe1\xda\x78\xc7\x5b\x84\xf2\x99\x6b\xa0\xf2\xfb\x6d\xc9\xf9\xd4\x54\xfa\xe6\xdd\xbb\xcb\xf3\x5f\xd3\xb2\x5e\x57\x75\x99\x1e\xaa\x7e\x93\x0e\xfd\xcd\x7f\xcb\xd6\x65\x5d\xb6\xc4\x44\x56\x55\x4a\x3b\xa3\x25\x22\x48\x89\x3c\x65\x72\x8b\xa4\xeb\xb6\xd9\x4e\xd0\x7b\x75\xf5\x36\xbd\x60\x14\xef\xf3\x7e\x83\x81\xf4\x9b\xa4\xfb\xfb\x96\x51\xe4\x3a\xbc\xde\x94\xe9\x4d\x45\xb3\x06\x50\x73\x63\xf8\x48\x0b\x1d\xe3\x22\x29\xdb\x36\xa3\x7d\xdf\xdf\x67\x5a\x59\xdb\x1b\x43\x4a\x13\x44\x3a\x75\xd3\xa7\xcb\x32\x45\x9d\x45\x92\xd8\x80\x0d\xbb\xa7\xfb\xfd\xb6\x5a\xc9\x8e\x7d\x25\x65\x1e\xd1\xcc\xa2\x15\x4b\x21\x1c\x10\x65\x65\x01\xba\x88\xff\xdd\x37\x43\x9b\x46\x6c\x00\xf5\x37\x25\xf1\xe5\xcd\x40\x5b\x2e\x27\x9e\xba\x6d\x86\xe2\x1b\x50\xaa\x8d\xde\x13\x6a\xfa\xa1\xa1\x01\x03\x3b\x0e\xc0\x77\x71\x4a\x14\xc7\xa7\x42\x5b\xee\x1a\xe2\x0e\x8e\xd8\x2b\x22\xa8\x43\x45\x85\x34\xd3\x2e\xbf\xa3\xfd\xd6\x37\x69\xbf\xa9\xba\xb4\x20\x62\x5b\x71\xc3\xb4\x35\x06\xe2\xc7\x42\x16\x44\xa0\x42\x1a\x96\x17\xaf\x01\xa0\x76\x03\x51\xd3\x86\x1a\x63\x6e\xcf\x47\x13\x35\x39\x37\x4e\x4c\x89\xda\x01\x7d\x13\xe5\x36\xc4\x5b\x99\xfb\x9d\x23\xa1\xdf\x61\xfb\x34\xaa\xfc\xe6\x86\x46\xd5\x11\x55\xbc\x4e\x57\xdb\x86\x48\xea\xe3\x87\xb7\x54\x79\xd3\xf7\xfb\x6c\xdf\xb4\x20\xe3\xeb\xeb\xf7\xb4\x3d\xda\xde\xe7\x06\xb8\x66\x98\x7a\xd8\x2d\xe9\xeb\xb0\xa9\x88\x09\xe4\xc1\x02\x01\x15\x5b\x3e\x60\xea\xb4\xa9\x17\x58\xab\xa1\xdd\x8e\x96\x91\xba\xb4\x92\x23\xc3\xe3\x21\x3c\xe5\x3f\x57\x7e\x94\x98\x6e\x47\xa7\xf0\x01\x8b\x4a\x53\x2d\x71\x9a\x10\x6d\x35\x7b\x6e\x37\x20\xae\x4b\xcd\xf0\x14\x85\x13\xc8\x95\xcb\x39\x44\xa5\x38\xe3\x03\x5e\xba\xa3\x09\xeb\x6e\xbe\xba\x20\x34\x60\x4b\x23\xf7\xa6\x6d\x76\x94\xfb\x92\xfe\xf9\x0c\x3f\xfc\x0b\x6e\x0f\x30\x79\x51\x10\x9b\xe9\x4e\xd2\x0f\x2f\xcf\xd2\xff\xf2\xd3\x8f\x3f\x2e\xd2\x37\x3d\x6f\x08\xa6\x91\xbf\xf1\xda\x52\x52\x0e\x44\x07\x4a\x3b\xb7\xa7\xe5\xff\x96\x09\xfc\xdb\xf4\x19\x4a\xff\x7b\xf9\x7b\x4e\xe7\x6c\xb9\x58\x35\xbb\x17\xbc\xb9\x77\x79\xbf\x48\xb8\x84\xa8\x46\xc9\xe9\xaa\xac\x0b\x4a\xe8\xb1\xaa\x65\x01\xd7\xd1\xf2\xe0\x90\x95\xd3\x3f\x5b\x35\xf5\x4d\xd5\xf2\x84\x7e\xab\xf3\x25\xe1\xc4\xe4\x02\x62\xc7\x28\xb1\xb3\x8b\x90\x46\x1b\xb9\xba\xb9\xf7\xa0\x98\xea\x3b\xce\xd4\x05\x4d\x58\x56\xa2\x46\x55\x64\x72\x58\xbe\x42\x36\xd6\xed\x92\xa6\xd7\x1a\xbe\x3b\x8f\xf0\xe6\xe6\x66\x4b\x8c\xcd\x98\x95\xf6\x70\x29\xb9\xc2\xb7\x42\x10\x22\xc6\x3d\x24\x9b\xfLine truncated
|
var _confLocaleLocale_enUsIni = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xc4\x7d\xeb\x72\xdc\x48\xb2\xde\x7f\x3c\x05\x66\x1c\xb2\x66\x22\xa8\x56\xcc\x4c\xd8\xe1\x98\x90\x34\xe6\x90\xa3\xcb\x1e\x51\xd4\x11\xa9\x5d\x1f\x2b\x14\x58\x74\x03\xec\xc6\xb2\x1b\xe8\xc5\x85\x3d\xdc\x5f\x7e\x0d\xbf\x9e\x9f\xc4\x99\x5f\x66\xd6\x05\x40\x53\xa3\x3d\x0e\x9f\x3f\x64\x75\x55\xd6\x2d\x2b\x2b\x2b\x6f\x55\xc8\xf7\xfb\xac\x28\xbb\x55\xfa\x3c\x3d\x4d\xf7\x79\x55\x6f\xcb\xae\x4b\xbb\x72\x7b\xf3\x64\xd3\x74\x7d\x59\xa4\xaf\xaa\x9e\x7e\xb7\x77\xd5\xaa\x4c\x92\x4d\xb3\x2b\x09\xf4\x35\xfd\x4b\x8a\xbc\xdb\x2c\x9b\xbc\x2d\x28\xe3\xdc\xd2\x49\xf9\xfb\x7e\xdb\xb4\x0c\xf4\x9b\xa4\x92\x4d\xb9\xdd\x73\x1d\xfa\x97\x74\xd5\xba\xce\xaa\x9a\x7e\x5e\x51\x2a\x7d\x53\x27\x5d\xb3\xaa\xf2\x6d\x16\x14\x20\xc3\xca\x7f\x4e\x7f\xac\x8b\xf4\xaa\x2f\xf7\xe9\xb3\x6e\x97\x6f\xb7\x2f\xf2\x0e\x55\xfa\x32\xcd\x57\xab\x66\xa8\xfb\x67\x4f\xa5\x40\x1a\x6f\x86\xde\x5a\xbf\x1c\x7a\xc9\x1b\xf6\x96\xf5\x71\x9f\xb4\xe5\xba\xa2\x89\xb5\x94\xf5\x41\x93\xc9\xa1\x5c\x76\x55\xcf\x83\xfe\x8b\xa4\x92\xbb\xb2\xed\xaa\x86\xc7\xf3\x67\x49\x25\xfb\x7c\xcd\x00\xef\xe9\x5f\xd2\x97\xbb\xfd\x36\x47\x85\x6b\x4d\x26\xdb\xbc\x5e\x0f\x02\xf3\x56\x93\x49\x32\x10\xe6\xea\x1c\x38\xfb\xa8\xc9\xa4\xdc\xe5\xd5\x96\xf1\xf3\x84\x13\xd4\x6e\xd7\x1d\x1a\x60\xf1\xbd\x26\x69\x8c\x59\x7f\xbf\x2f\x31\xc4\x27\xd7\x94\x4a\x56\xf9\xbe\x5f\x6d\x72\xca\x39\x93\x54\x42\x40\xfb\x86\xc6\xda\xb4\xf7\x80\xb3\x1f\x49\xd3\xae\xf3\xba\xfa\x47\xde\xcb\xf8\x2f\x83\x9f\xc9\xae\x6a\xdb\x86\xa7\x7e\x81\x44\x52\x97\x87\x8c\xdb\xa1\x9c\x77\xe5\x21\x6c\x85\x4b\x76\xd5\xba\x95\x59\x72\xe1\x05\x7e\x71\x2b\x5c\x76\xd3\xb4\xb7\x5a\xf0\x92\x93\xa3\xaa\x34\x08\x2d\x8d\xfb\xcf\x6b\xc2\x8b\x96\x5e\xe0\x47\x04\xd0\x25\x79\xb1\xab\xea\x6c\x9f\xd7\x25\xe3\xe8\x94\x7f\x11\x5e\xe8\x57\xa2\xcb\x9d\x75\x65\xdf\x57\xf5\xba\xe3\x62\xc9\x4a\xaf\x34\x2b\x09\xca\x5c\x1e\x8f\xa7\xcb\x6e\xca\xb2\x90\x11\x75\xe9\x4b\x4a\x27\xfb\x61\xbb\xa5\xb9\xff\x7d\x28\xbb\x9e\xe1\xdf\xd3\x6f\x9a\x85\xfc\x4e\xaa\xae\xa3\x04\x65\xbf\x41\x22\xa1\x05\xa8\x57\x18\xd2\x19\x12\x49\xf2\xa9\x2b\xf3\x76\xb5\xf9\x9c\xc8\x7f\xf4\xc8\x89\xc5\x62\x71\x74\x69\x98\x1c\x94\x14\xa4\x07\xeb\x20\x59\x35\x05\xff\x38\xa3\x7f\xd4\x74\x55\x77\x3d\x91\xf4\xe7\x44\x13\x0c\x26\x29\x41\x63\x5f\xf5\xdb\xd2\x67\x62\x7f\x74\xbc\x0e\xe9\xcb\xaa\xed\xfa\x27\x7d\x45\x24\xf7\x61\xa8\x13\x9e\x1f\x91\x73\x56\x2c\x6d\x97\xbf\x6a\x08\x3b\xc8\x6e\x69\x7e\x17\xf7\x57\xff\xfa\xf6\x24\x7d\x4f\x5b\x7d\xdd\x96\x94\x4e\xa9\x0d\xfa\x47\x75\x7e\x5a\x24\x54\xcb\x7a\x3a\xcf\xfb\x7c\x99\x77\xa5\x47\x2b\x17\x0a\x8d\xba\x32\x50\x2a\xb3\x0d\xb0\x88\xae\x8f\xe6\x3b\x47\xe7\xd4\x86\xee\x0e\xd7\xc6\x3b\xde\x22\x94\xcf\x5c\x03\x95\xdf\x6f\x4b\xce\xa7\xa6\xd2\x37\xef\xde\x5d\x9e\xff\x9a\x96\xf5\xba\xaa\xcb\xf4\x50\xf5\x9b\x74\xe8\x6f\xfe\x5b\xb6\x2e\xeb\xb2\x25\x26\xb2\xaa\x52\xda\x19\x2d\x11\x41\x4a\xe4\x29\x93\x5b\x24\x5d\xb7\xcd\x76\x82\xde\xab\xab\xb7\xe9\x05\xa3\x78\x9f\xf7\x1b\x0c\xa4\xdf\x24\xdd\xdf\xb7\x8c\x22\xd7\xe1\xf5\xa6\x4c\x6f\x2a\x9a\x35\x80\x9a\x1b\xc3\x47\x5a\xe8\x18\x17\x49\xd9\xb6\x19\xed\xfb\xfe\x3e\xd3\xca\xda\xde\x18\x52\x9a\x20\xd2\xa9\x9b\x3e\x5d\x96\x29\xea\x2c\x92\xc4\x06\x6c\xd8\x3d\xdd\xef\xb7\xd5\x4a\x76\xec\x2b\x29\xf3\x88\x66\x16\xad\x58\x0a\xe1\x80\x28\x2b\x0b\xd0\x45\xfc\xef\xbe\x19\xda\x34\x62\x03\xa8\xbf\x29\x89\x2f\x6f\x06\xda\x72\x39\xf1\xd4\x6d\x33\x14\xdf\x80\x52\x6d\xf4\x9e\x50\xd3\x0f\x0d\x0d\x18\xd8\x71\x00\xbe\x8b\x53\xa2\x38\x3e\x15\xda\x72\xd7\x10\x77\x70\xc4\x5e\x11\x41\x1d\x2a\x2a\xa4\x99\x76\xf9\x1d\xed\xb7\xbe\x49\xfb\x4d\xd5\xa5\x05\x11\xdb\x8a\x1b\xa6\xad\x31\x10\x3f\x16\xb2\x20\x02\x15\xd2\xb0\xbc\x78\x0d\x00\xb5\x1b\x88\x9a\x36\xd4\x18\x73\x7b\x3e\x9a\xa8\xc9\xb9\x71\x62\x4a\xd4\x0e\xe8\x9b\x28\xb7\x21\xde\xca\xdc\xef\x1c\x09\xfd\x1d\xb6\x4f\xa3\xca\x6f\x6e\x68\x54\x1d\x51\xc5\xeb\x74\xb5\x6d\x88\xa4\x3e\x7e\x78\x4b\x95\x37\x7d\xbf\xcf\xf6\x4d\x0b\x32\xbe\xbe\x7e\x4f\xdb\xa3\xed\x7d\x6e\x80\x6b\x86\xa9\x87\xdd\x92\x7e\x1d\x36\x15\x31\x81\x3c\x58\x20\xa0\x62\xcb\x07\x4c\x9d\x36\xf5\x02\x6b\x35\xb4\xdb\xd1\x32\x52\x97\x56\x72\x64\x78\x3c\x84\xa7\xfc\xe7\xca\x8f\x12\xd3\xed\xe8\x14\x3e\x60\x51\x69\xaa\x25\x4e\x13\xa2\xad\x66\xcf\xed\x06\xc4\x75\xa9\x19\x9e\xa2\x70\x02\xb9\x72\x39\x87\xa8\x14\x67\x7c\xc0\x4b\x77\x34\x61\xdd\xcd\x57\x17\x84\x06\x6c\x69\xe4\xde\xb4\xcd\x8e\x72\x5f\xd2\x3f\x9f\xe1\x87\x7f\xc1\xed\x01\x26\x2f\x0a\x62\x33\xdd\x49\xfa\xe1\xe5\x59\xfa\x5f\x7e\xfa\xf1\xc7\x45\xfa\xa6\xe7\x0d\xc1\x34\xf2\x37\x5e\x5b\x4a\xca\x81\xe8\x40\x69\xe7\xf6\xb4\xfc\xdf\x32\x81\x7f\x9b\x3e\x43\xe9\x7f\x2f\x7f\xcf\xe9\x9c\x2d\x17\xab\x66\xf7\x82\x37\xf7\x2e\xef\x17\x09\x97\x10\xd5\x28\x39\x5d\x95\x75\x41\x09\x3d\x56\xb5\x2c\xe0\x3a\x5a\x1e\x1c\xb2\x72\xfa\x67\xab\xa6\xbe\xa9\x5a\x9e\xd0\x6f\x75\xbe\x24\x9c\x98\x5c\x40\xec\x18\x25\x76\x76\x11\xd2\x68\x23\x57\x37\xf7\x1e\x14\x53\x7d\xc7\x99\xba\xa0\x09\xcb\x4a\xd4\xa8\x8a\x4c\x0e\xcb\x57\xc8\xc6\xba\x5d\xd2\xf4\x5a\xc3\x77\xe7\x11\xde\xdc\xdc\x6c\x89\xb1\x19\xb3\xd2\x1e\x2e\x25\x57\xf8\x56\x08\x42\xc4\xb8\x87\x6Line truncated
|
||||||
|
|
||||||
func confLocaleLocale_enUsIniBytes() ([]byte, error) {
|
func confLocaleLocale_enUsIniBytes() ([]byte, error) {
|
||||||
return bindataRead(
|
return bindataRead(
|
||||||
@@ -786,7 +786,7 @@ func confLocaleLocale_enUsIni() (*asset, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
info := bindataFileInfo{name: "conf/locale/locale_en-US.ini", size: 33385, mode: os.FileMode(420), modTime: time.Unix(1437725453, 0)}
|
info := bindataFileInfo{name: "conf/locale/locale_en-US.ini", size: 33685, mode: os.FileMode(420), modTime: time.Unix(1437742006, 0)}
|
||||||
a := &asset{bytes: bytes, info: info}
|
a := &asset{bytes: bytes, info: info}
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+1143
-1
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,278 @@
|
|||||||
|
.minicolors {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-sprite {
|
||||||
|
background-image: url(data:image/png;base64,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 truncated
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-no-data-uris .minicolors-sprite {
|
||||||
|
background-image: url(jquery.minicolors.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-swatch {
|
||||||
|
position: absolute;
|
||||||
|
vertical-align: middle;
|
||||||
|
background-position: -80px 0;
|
||||||
|
border: solid 1px #ccc;
|
||||||
|
cursor: text;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-swatch-color {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors input[type=hidden] + .minicolors-swatch {
|
||||||
|
width: 28px;
|
||||||
|
position: static;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors input[type=hidden][disabled] + .minicolors-swatch {
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Panel */
|
||||||
|
.minicolors-panel {
|
||||||
|
position: absolute;
|
||||||
|
width: 173px;
|
||||||
|
height: 152px;
|
||||||
|
background: white;
|
||||||
|
border: solid 1px #CCC;
|
||||||
|
box-shadow: 0 0 20px rgba(0, 0, 0, .2);
|
||||||
|
z-index: 99999;
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-panel.minicolors-visible {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Panel positioning */
|
||||||
|
.minicolors-position-top .minicolors-panel {
|
||||||
|
top: -154px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-position-right .minicolors-panel {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-position-bottom .minicolors-panel {
|
||||||
|
top: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-position-left .minicolors-panel {
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-with-opacity .minicolors-panel {
|
||||||
|
width: 194px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors .minicolors-grid {
|
||||||
|
position: absolute;
|
||||||
|
top: 1px;
|
||||||
|
left: 1px;
|
||||||
|
width: 150px;
|
||||||
|
height: 150px;
|
||||||
|
background-position: -120px 0;
|
||||||
|
cursor: crosshair;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors .minicolors-grid-inner {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 150px;
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-slider-saturation .minicolors-grid {
|
||||||
|
background-position: -420px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-slider-saturation .minicolors-grid-inner {
|
||||||
|
background-position: -270px 0;
|
||||||
|
background-image: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-slider-brightness .minicolors-grid {
|
||||||
|
background-position: -570px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-slider-brightness .minicolors-grid-inner {
|
||||||
|
background-color: black;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-slider-wheel .minicolors-grid {
|
||||||
|
background-position: -720px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-slider,
|
||||||
|
.minicolors-opacity-slider {
|
||||||
|
position: absolute;
|
||||||
|
top: 1px;
|
||||||
|
left: 152px;
|
||||||
|
width: 20px;
|
||||||
|
height: 150px;
|
||||||
|
background-color: white;
|
||||||
|
background-position: 0 0;
|
||||||
|
cursor: row-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-slider-saturation .minicolors-slider {
|
||||||
|
background-position: -60px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-slider-brightness .minicolors-slider {
|
||||||
|
background-position: -20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-slider-wheel .minicolors-slider {
|
||||||
|
background-position: -20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-opacity-slider {
|
||||||
|
left: 173px;
|
||||||
|
background-position: -40px 0;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-with-opacity .minicolors-opacity-slider {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Pickers */
|
||||||
|
.minicolors-grid .minicolors-picker {
|
||||||
|
position: absolute;
|
||||||
|
top: 70px;
|
||||||
|
left: 70px;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
border: solid 1px black;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-top: -6px;
|
||||||
|
margin-left: -6px;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-grid .minicolors-picker > div {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
border-radius: 8px;
|
||||||
|
border: solid 2px white;
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-picker {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 18px;
|
||||||
|
height: 2px;
|
||||||
|
background: white;
|
||||||
|
border: solid 1px black;
|
||||||
|
margin-top: -2px;
|
||||||
|
-moz-box-sizing: content-box;
|
||||||
|
-webkit-box-sizing: content-box;
|
||||||
|
box-sizing: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline controls */
|
||||||
|
.minicolors-inline {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-inline .minicolors-input {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.minicolors-inline .minicolors-panel {
|
||||||
|
position: relative;
|
||||||
|
top: auto;
|
||||||
|
left: auto;
|
||||||
|
box-shadow: none;
|
||||||
|
z-index: auto;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Default theme */
|
||||||
|
.minicolors-theme-default .minicolors-swatch {
|
||||||
|
top: 5px;
|
||||||
|
left: 5px;
|
||||||
|
width: 18px;
|
||||||
|
height: 18px;
|
||||||
|
}
|
||||||
|
.minicolors-theme-default.minicolors-position-right .minicolors-swatch {
|
||||||
|
left: auto;
|
||||||
|
right: 5px;
|
||||||
|
}
|
||||||
|
.minicolors-theme-default.minicolors {
|
||||||
|
width: auto;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.minicolors-theme-default .minicolors-input {
|
||||||
|
height: 20px;
|
||||||
|
width: auto;
|
||||||
|
display: inline-block;
|
||||||
|
padding-left: 26px;
|
||||||
|
}
|
||||||
|
.minicolors-theme-default.minicolors-position-right .minicolors-input {
|
||||||
|
padding-right: 26px;
|
||||||
|
padding-left: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Bootstrap theme */
|
||||||
|
.minicolors-theme-bootstrap .minicolors-swatch {
|
||||||
|
z-index: 2;
|
||||||
|
top: 3px;
|
||||||
|
left: 3px;
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
.minicolors-theme-bootstrap .minicolors-swatch-color {
|
||||||
|
border-radius: inherit;
|
||||||
|
}
|
||||||
|
.minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch {
|
||||||
|
left: auto;
|
||||||
|
right: 3px;
|
||||||
|
}
|
||||||
|
.minicolors-theme-bootstrap .minicolors-input {
|
||||||
|
float: none;
|
||||||
|
padding-left: 44px;
|
||||||
|
}
|
||||||
|
.minicolors-theme-bootstrap.minicolors-position-right .minicolors-input {
|
||||||
|
padding-right: 44px;
|
||||||
|
padding-left: 12px;
|
||||||
|
}
|
||||||
|
.minicolors-theme-bootstrap .minicolors-input.input-lg + .minicolors-swatch {
|
||||||
|
top: 4px;
|
||||||
|
left: 4px;
|
||||||
|
width: 37px;
|
||||||
|
height: 37px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
.minicolors-theme-bootstrap .minicolors-input.input-sm + .minicolors-swatch {
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
}
|
||||||
|
.input-group .minicolors-theme-bootstrap:not(:first-child) .minicolors-input {
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
}
|
||||||
@@ -32,6 +32,24 @@ function initInstall() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function initRepository(){
|
||||||
|
if ($('.repository').length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($('.labels').length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$('.color-picker').each( function() {
|
||||||
|
$(this).minicolors();
|
||||||
|
});
|
||||||
|
$('.precolors .color').click(function(){
|
||||||
|
var color_hex = $(this).data('color-hex')
|
||||||
|
$('.color-picker').val(color_hex);
|
||||||
|
$('.minicolors-swatch-color').css("background-color", color_hex);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
// Semantic UI modules.
|
// Semantic UI modules.
|
||||||
$('.dropdown').dropdown();
|
$('.dropdown').dropdown();
|
||||||
@@ -46,4 +64,5 @@ $(document).ready(function () {
|
|||||||
$('.poping.up').popup();
|
$('.poping.up').popup();
|
||||||
|
|
||||||
initInstall();
|
initInstall();
|
||||||
|
initRepository();
|
||||||
});
|
});
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* jQuery MiniColors: A tiny color picker built on jQuery
|
||||||
|
*
|
||||||
|
* Copyright: Cory LaViska for A Beautiful Site, LLC: http://www.abeautifulsite.net/
|
||||||
|
*
|
||||||
|
* Contribute: https://github.com/claviska/jquery-minicolors
|
||||||
|
*
|
||||||
|
* @license: http://opensource.org/licenses/MIT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
!function(i){"function"==typeof define&&define.amd?define(["jquery"],i):"object"==typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function($){function i(i,t){var o=$('<div class="minicolors" />'),n=$.minicolors.defaults;i.data("minicolors-initialized")||(t=$.extend(!0,{},n,t),o.addClass("minicolors-theme-"+t.theme).toggleClass("minicolors-with-opacity",t.opacity).toggleClass("minicolors-no-data-uris",t.dataUris!==!0),void 0!==t.position&&$.each(t.position.split(" "),function(){o.addClass("minicolors-position-"+this)}),i.addClass("minicolors-input").data("minicolors-initialized",!1).data("minicolors-settings",t).prop("size",7).wrap(o).after('<div class="minicolors-panel minicolors-slider-'+t.control+'"><div class="minicolors-slider minicolors-sprite"><div class="minicolors-picker"></div></div><div class="minicolors-opacity-slider minicolors-sprite"><div class="minicolors-picker"></div></div><div class="minicolors-grid minicolors-sprite"><div class="minicolors-grid-inner"></div><div class="minicolors-picker"><div></div></div></div></div>'),t.inline||(i.after('<span class="minicolors-swatch minicolors-sprite"><span class="minicolors-swatch-color"></span></span>'),i.next(".minicolors-swatch").on("click",function(t){t.preventDefault(),i.focus()})),i.parent().find(".minicolors-panel").on("selectstart",function(){return!1}).end(),t.inline&&i.parent().addClass("minicolors-inline"),e(i,!1),i.data("minicolors-initialized",!0))}function t(i){var t=i.parent();i.removeData("minicolors-initialized").removeData("minicolors-settings").removeProp("size").removeClass("minicolors-input"),t.before(i).remove()}function o(i){var t=i.parent(),o=t.find(".minicolors-panel"),s=i.data("minicolors-settings");!i.data("minicolors-initialized")||i.prop("disabled")||t.hasClass("minicolors-inline")||t.hasClass("minicolors-focus")||(n(),t.addClass("minicolors-focus"),o.stop(!0,!0).fadeIn(s.showSpeed,function(){s.show&&s.show.call(i.get(0))}))}function n(){$(".minicolors-focus").each(function(){var i=$(this),t=i.find(".minicolors-input"),o=i.find(".minicolors-panel"),n=t.data("minicolors-settings");o.fadeOut(n.hideSpeed,function(){n.hide&&n.hide.call(t.get(0)),i.removeClass("minicolors-focus")})})}function s(i,t,o){var n=i.parents(".minicolors").find(".minicolors-input"),s=n.data("minicolors-settings"),e=i.find("[class$=-picker]"),r=i.offset().left,c=i.offset().top,l=Math.round(t.pageX-r),h=Math.round(t.pageY-c),d=o?s.animationSpeed:0,u,g,p,m;t.originalEvent.changedTouches&&(l=t.originalEvent.changedTouches[0].pageX-r,h=t.originalEvent.changedTouches[0].pageY-c),0>l&&(l=0),0>h&&(h=0),l>i.width()&&(l=i.width()),h>i.height()&&(h=i.height()),i.parent().is(".minicolors-slider-wheel")&&e.parent().is(".minicolors-grid")&&(u=75-l,g=75-h,p=Math.sqrt(u*u+g*g),m=Math.atan2(g,u),0>m&&(m+=2*Math.PI),p>75&&(p=75,l=75-75*Math.cos(m),h=75-75*Math.sin(m)),l=Math.round(l),h=Math.round(h)),i.is(".minicolors-grid")?e.stop(!0).animate({top:h+"px",left:l+"px"},d,s.animationEasing,function(){a(n,i)}):e.stop(!0).animate({top:h+"px"},d,s.animationEasing,function(){a(n,i)})}function a(i,t){function o(i,t){var o,n;return i.length&&t?(o=i.offset().left,n=i.offset().top,{x:o-t.offset().left+i.outerWidth()/2,y:n-t.offset().top+i.outerHeight()/2}):null}var n,s,a,e,c,l,d,g=i.val(),p=i.attr("data-opacity"),f=i.parent(),v=i.data("minicolors-settings"),b=f.find(".minicolors-swatch"),y=f.find(".minicolors-grid"),M=f.find(".minicolors-slider"),w=f.find(".minicolors-opacity-slider"),x=y.find("[class$=-picker]"),C=M.find("[class$=-picker]"),k=w.find("[class$=-picker]"),S=o(x,y),z=o(C,M),D=o(k,w);if(t.is(".minicolors-grid, .minicolors-slider")){switch(v.control){case"wheel":e=y.width()/2-S.x,c=y.height()/2-S.y,l=Math.sqrt(e*e+c*c),d=Math.atan2(c,e),0>d&&(d+=2*Math.PI),l>75&&(l=75,S.x=69-75*Math.cos(d),S.y=69-75*Math.sin(d)),s=u(l/.75,0,100),n=u(180*d/Math.PI,0,360),a=u(100-Math.floor(z.y*(100/M.height())),0,100),g=m({h:n,s:s,b:a}),M.css("backgroundColor",m({h:n,s:s,b:100}));break;case"saturation":n=u(parseInt(S.x*(360/y.width()),10),0,360),s=u(100-Math.floor(z.y*(100/M.height())),0,100),a=u(100-Math.floor(S.y*(100/y.height())),0,100),g=m({h:n,s:s,b:a}),M.css("backgroundColor",m({h:n,s:100,b:a})),f.find(".minicolors-grid-inner").css("opacity",s/100);break;case"brightness":n=u(parseInt(S.x*(360/y.width()),10),0,360),s=u(100-Math.floor(S.y*(100/y.height())),0,100),a=u(100-Math.floor(z.y*(100/M.height())),0,100),g=m({h:n,s:s,b:a}),M.css("backgroundColor",m({h:n,s:s,b:100})),f.find(".minicolors-grid-inner").css("opacity",1-a/100);break;default:n=u(360-parseInt(z.y*(360/M.height()),10),0,360),s=u(Math.floor(S.x*(100/y.width())),0,100),a=u(100-Math.floor(S.y*(100/y.height())),0,100),g=m({h:n,s:s,b:a}),y.css("backgroundColor",m({h:n,s:100,b:100}))}i.val(h(g,v.letterCase))}t.is(".minicolors-opacity-slider")&&(p=v.opacity?parseFloat(1-D.y/w.height()).toFixed(2):1,v.opacity&&i.attr("data-opacity",p)),b.find("SPAN").css({backgroundColor:g,opacity:p}),r(i,g,p)}function e(i,t){vLine truncated
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 76 KiB |
Vendored
-1
@@ -1 +0,0 @@
|
|||||||
$(document).ready(function(){$(".dropdown").dropdown({transition:"slide up"})});
|
|
||||||
@@ -41,6 +41,42 @@
|
|||||||
.navbar {
|
.navbar {
|
||||||
height: 60px;
|
height: 60px;
|
||||||
padding-top: 20px;
|
padding-top: 20px;
|
||||||
|
.ui.secondary.menu .item {
|
||||||
|
margin-left: -10px;
|
||||||
|
margin-top: -7px;
|
||||||
|
&>.input {
|
||||||
|
.new-label-input,
|
||||||
|
.color-picker {
|
||||||
|
background-color: white;
|
||||||
|
border: 1px solid rgba(0,0,0,.15);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.new-label-input {
|
||||||
|
width: 150px;
|
||||||
|
}
|
||||||
|
.color-picker {
|
||||||
|
height: 35px;
|
||||||
|
width: auto;
|
||||||
|
padding-left: 30px;
|
||||||
|
}
|
||||||
|
.minicolors-swatch.minicolors-sprite {
|
||||||
|
top: 10px;
|
||||||
|
left: 10px;
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
}
|
||||||
|
&.precolors {
|
||||||
|
padding-left: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
margin-right: 10px;
|
||||||
|
width: 120px;
|
||||||
|
.color {
|
||||||
|
float: left;
|
||||||
|
width: 15px;
|
||||||
|
height: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.filter.menu .label.color {
|
.filter.menu .label.color {
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
@@ -50,9 +86,10 @@
|
|||||||
left: auto!important;
|
left: auto!important;
|
||||||
}
|
}
|
||||||
.issue.list {
|
.issue.list {
|
||||||
|
clear: both;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
padding-top: 45px;
|
padding-top: 15px;
|
||||||
.item {
|
.item {
|
||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
@@ -79,4 +116,25 @@
|
|||||||
padding-top: 15px;
|
padding-top: 15px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.label.list {
|
||||||
|
clear: both;
|
||||||
|
padding-top: 15px;
|
||||||
|
.item {
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
border-bottom: 1px dashed #AAA;
|
||||||
|
a {
|
||||||
|
font-size: 15px;
|
||||||
|
padding-top: 5px;
|
||||||
|
padding-right: 10px;
|
||||||
|
color: #666;
|
||||||
|
&:hover {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
&.open-issues {
|
||||||
|
margin-right: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+58
-50
@@ -30,6 +30,8 @@ const (
|
|||||||
ISSUE_CREATE base.TplName = "repo/issue/create"
|
ISSUE_CREATE base.TplName = "repo/issue/create"
|
||||||
ISSUE_VIEW base.TplName = "repo/issue/view"
|
ISSUE_VIEW base.TplName = "repo/issue/view"
|
||||||
|
|
||||||
|
LABELS base.TplName = "repo/issue/labels"
|
||||||
|
|
||||||
MILESTONE base.TplName = "repo/issue/milestone"
|
MILESTONE base.TplName = "repo/issue/milestone"
|
||||||
MILESTONE_NEW base.TplName = "repo/issue/milestone_new"
|
MILESTONE_NEW base.TplName = "repo/issue/milestone_new"
|
||||||
MILESTONE_EDIT base.TplName = "repo/issue/milestone_edit"
|
MILESTONE_EDIT base.TplName = "repo/issue/milestone_edit"
|
||||||
@@ -40,6 +42,19 @@ var (
|
|||||||
ErrTooManyFiles = errors.New("Maximum number of files to upload exceeded")
|
ErrTooManyFiles = errors.New("Maximum number of files to upload exceeded")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func RetrieveLabels(ctx *middleware.Context) {
|
||||||
|
labels, err := models.GetLabels(ctx.Repo.Repository.Id)
|
||||||
|
if err != nil {
|
||||||
|
ctx.Handle(500, "RetrieveLabels.GetLabels: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
for _, l := range labels {
|
||||||
|
l.CalOpenIssues()
|
||||||
|
}
|
||||||
|
ctx.Data["Labels"] = labels
|
||||||
|
ctx.Data["NumLabels"] = len(labels)
|
||||||
|
}
|
||||||
|
|
||||||
func Issues(ctx *middleware.Context) {
|
func Issues(ctx *middleware.Context) {
|
||||||
ctx.Data["Title"] = ctx.Tr("repo.issues")
|
ctx.Data["Title"] = ctx.Tr("repo.issues")
|
||||||
ctx.Data["PageIsIssueList"] = true
|
ctx.Data["PageIsIssueList"] = true
|
||||||
@@ -85,17 +100,6 @@ func Issues(ctx *middleware.Context) {
|
|||||||
mid = mile.Id
|
mid = mile.Id
|
||||||
}
|
}
|
||||||
|
|
||||||
selectLabels := ctx.Query("labels")
|
|
||||||
labels, err := models.GetLabels(repo.Id)
|
|
||||||
if err != nil {
|
|
||||||
ctx.Handle(500, "GetLabels: %v", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
for _, l := range labels {
|
|
||||||
l.CalOpenIssues()
|
|
||||||
}
|
|
||||||
ctx.Data["Labels"] = labels
|
|
||||||
|
|
||||||
page := ctx.QueryInt("page")
|
page := ctx.QueryInt("page")
|
||||||
if page <= 1 {
|
if page <= 1 {
|
||||||
page = 1
|
page = 1
|
||||||
@@ -107,6 +111,8 @@ func Issues(ctx *middleware.Context) {
|
|||||||
ctx.Data["NextPage"] = page + 1
|
ctx.Data["NextPage"] = page + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
selectLabels := ctx.Query("labels")
|
||||||
|
|
||||||
// Get issues.
|
// Get issues.
|
||||||
issues, err := models.GetIssues(assigneeId, repo.Id, posterId, mid, page,
|
issues, err := models.GetIssues(assigneeId, repo.Id, posterId, mid, page,
|
||||||
isShowClosed, selectLabels, ctx.Query("sortType"))
|
isShowClosed, selectLabels, ctx.Query("sortType"))
|
||||||
@@ -125,24 +131,26 @@ func Issues(ctx *middleware.Context) {
|
|||||||
// Get posters.
|
// Get posters.
|
||||||
for i := range issues {
|
for i := range issues {
|
||||||
if err = issues[i].GetLabels(); err != nil {
|
if err = issues[i].GetLabels(); err != nil {
|
||||||
ctx.Handle(500, "GetLabels", fmt.Errorf("[#%d]%v", issues[i].Id, err))
|
ctx.Handle(500, "GetLabels", fmt.Errorf("[#%d]%v", issues[i].ID, err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
idx := models.PairsContains(pairs, issues[i].Id, ctx.User.Id)
|
if ctx.IsSigned {
|
||||||
|
idx := models.PairsContains(pairs, issues[i].ID, ctx.User.Id)
|
||||||
|
|
||||||
if filterMode == models.FM_MENTION && (idx == -1 || !pairs[idx].IsMentioned) {
|
if filterMode == models.FM_MENTION && (idx == -1 || !pairs[idx].IsMentioned) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if idx > -1 {
|
if idx > -1 {
|
||||||
issues[i].IsRead = pairs[idx].IsRead
|
issues[i].IsRead = pairs[idx].IsRead
|
||||||
} else {
|
} else {
|
||||||
issues[i].IsRead = true
|
issues[i].IsRead = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = issues[i].GetPoster(); err != nil {
|
if err = issues[i].GetPoster(); err != nil {
|
||||||
ctx.Handle(500, "GetPoster", fmt.Errorf("[#%d]%v", issues[i].Id, err))
|
ctx.Handle(500, "GetPoster", fmt.Errorf("[#%d]%v", issues[i].ID, err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -257,14 +265,14 @@ func CreateIssuePost(ctx *middleware.Context, form auth.CreateIssueForm) {
|
|||||||
if err := models.NewIssue(issue); err != nil {
|
if err := models.NewIssue(issue); err != nil {
|
||||||
send(500, nil, err)
|
send(500, nil, err)
|
||||||
return
|
return
|
||||||
} else if err := models.NewIssueUserPairs(ctx.Repo.Repository, issue.Id, ctx.Repo.Owner.Id,
|
} else if err := models.NewIssueUserPairs(ctx.Repo.Repository, issue.ID, ctx.Repo.Owner.Id,
|
||||||
ctx.User.Id, form.AssigneeId); err != nil {
|
ctx.User.Id, form.AssigneeId); err != nil {
|
||||||
send(500, nil, err)
|
send(500, nil, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if setting.AttachmentEnabled {
|
if setting.AttachmentEnabled {
|
||||||
uploadFiles(ctx, issue.Id, 0)
|
uploadFiles(ctx, issue.ID, 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update mentions.
|
// Update mentions.
|
||||||
@@ -274,7 +282,7 @@ func CreateIssuePost(ctx *middleware.Context, form auth.CreateIssueForm) {
|
|||||||
ms[i] = ms[i][1:]
|
ms[i] = ms[i][1:]
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := models.UpdateMentions(ms, issue.Id); err != nil {
|
if err := models.UpdateMentions(ms, issue.ID); err != nil {
|
||||||
send(500, nil, err)
|
send(500, nil, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -321,7 +329,7 @@ func CreateIssuePost(ctx *middleware.Context, form auth.CreateIssueForm) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.Trace("%d Issue created: %d", ctx.Repo.Repository.Id, issue.Id)
|
log.Trace("%d Issue created: %d", ctx.Repo.Repository.Id, issue.ID)
|
||||||
|
|
||||||
send(200, fmt.Sprintf("%s/%s/%s/issues/%d", setting.AppSubUrl, ctx.Params(":username"), ctx.Params(":reponame"), issue.Index), nil)
|
send(200, fmt.Sprintf("%s/%s/%s/issues/%d", setting.AppSubUrl, ctx.Params(":username"), ctx.Params(":reponame"), issue.Index), nil)
|
||||||
}
|
}
|
||||||
@@ -329,7 +337,7 @@ func CreateIssuePost(ctx *middleware.Context, form auth.CreateIssueForm) {
|
|||||||
func checkLabels(labels, allLabels []*models.Label) {
|
func checkLabels(labels, allLabels []*models.Label) {
|
||||||
for _, l := range labels {
|
for _, l := range labels {
|
||||||
for _, l2 := range allLabels {
|
for _, l2 := range allLabels {
|
||||||
if l.Id == l2.Id {
|
if l.ID == l2.ID {
|
||||||
l2.IsChecked = true
|
l2.IsChecked = true
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -403,7 +411,7 @@ func ViewIssue(ctx *middleware.Context) {
|
|||||||
|
|
||||||
if ctx.IsSigned {
|
if ctx.IsSigned {
|
||||||
// Update issue-user.
|
// Update issue-user.
|
||||||
if err = models.UpdateIssueUserPairByRead(ctx.User.Id, issue.Id); err != nil {
|
if err = models.UpdateIssueUserPairByRead(ctx.User.Id, issue.ID); err != nil {
|
||||||
ctx.Handle(500, "issue.ViewIssue(UpdateIssueUserPairByRead): %v", err)
|
ctx.Handle(500, "issue.ViewIssue(UpdateIssueUserPairByRead): %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -420,7 +428,7 @@ func ViewIssue(ctx *middleware.Context) {
|
|||||||
issue.RenderedContent = string(base.RenderMarkdown([]byte(issue.Content), ctx.Repo.RepoLink))
|
issue.RenderedContent = string(base.RenderMarkdown([]byte(issue.Content), ctx.Repo.RepoLink))
|
||||||
|
|
||||||
// Get comments.
|
// Get comments.
|
||||||
comments, err := models.GetIssueComments(issue.Id)
|
comments, err := models.GetIssueComments(issue.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Handle(500, "issue.ViewIssue(GetIssueComments): %v", err)
|
ctx.Handle(500, "issue.ViewIssue(GetIssueComments): %v", err)
|
||||||
return
|
return
|
||||||
@@ -642,7 +650,7 @@ func UpdateAssignee(ctx *middleware.Context) {
|
|||||||
aid := com.StrTo(ctx.Query("assigneeid")).MustInt64()
|
aid := com.StrTo(ctx.Query("assigneeid")).MustInt64()
|
||||||
// Not check for invalid assignee id and give responsibility to owners.
|
// Not check for invalid assignee id and give responsibility to owners.
|
||||||
issue.AssigneeId = aid
|
issue.AssigneeId = aid
|
||||||
if err = models.UpdateIssueUserPairByAssignee(aid, issue.Id); err != nil {
|
if err = models.UpdateIssueUserPairByAssignee(aid, issue.ID); err != nil {
|
||||||
ctx.Handle(500, "UpdateIssueUserPairByAssignee: %v", err)
|
ctx.Handle(500, "UpdateIssueUserPairByAssignee: %v", err)
|
||||||
return
|
return
|
||||||
} else if err = models.UpdateIssue(issue); err != nil {
|
} else if err = models.UpdateIssue(issue); err != nil {
|
||||||
@@ -774,7 +782,7 @@ func Comment(ctx *middleware.Context) {
|
|||||||
if err = models.UpdateIssue(issue); err != nil {
|
if err = models.UpdateIssue(issue); err != nil {
|
||||||
send(500, nil, err)
|
send(500, nil, err)
|
||||||
return
|
return
|
||||||
} else if err = models.UpdateIssueUserPairsByStatus(issue.Id, issue.IsClosed); err != nil {
|
} else if err = models.UpdateIssueUserPairsByStatus(issue.ID, issue.IsClosed); err != nil {
|
||||||
send(500, nil, err)
|
send(500, nil, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -809,11 +817,11 @@ func Comment(ctx *middleware.Context) {
|
|||||||
cmtType = models.COMMENT_TYPE_REOPEN
|
cmtType = models.COMMENT_TYPE_REOPEN
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = models.CreateComment(ctx.User.Id, ctx.Repo.Repository.Id, issue.Id, 0, 0, cmtType, "", nil); err != nil {
|
if _, err = models.CreateComment(ctx.User.Id, ctx.Repo.Repository.Id, issue.ID, 0, 0, cmtType, "", nil); err != nil {
|
||||||
send(200, nil, err)
|
send(200, nil, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Trace("%s Issue(%d) status changed: %v", ctx.Req.RequestURI, issue.Id, !issue.IsClosed)
|
log.Trace("%s Issue(%d) status changed: %v", ctx.Req.RequestURI, issue.ID, !issue.IsClosed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -825,7 +833,7 @@ func Comment(ctx *middleware.Context) {
|
|||||||
if len(content) > 0 || len(ctx.Req.MultipartForm.File["attachments"]) > 0 {
|
if len(content) > 0 || len(ctx.Req.MultipartForm.File["attachments"]) > 0 {
|
||||||
switch ctx.Params(":action") {
|
switch ctx.Params(":action") {
|
||||||
case "new":
|
case "new":
|
||||||
if comment, err = models.CreateComment(ctx.User.Id, ctx.Repo.Repository.Id, issue.Id, 0, 0, models.COMMENT_TYPE_COMMENT, content, nil); err != nil {
|
if comment, err = models.CreateComment(ctx.User.Id, ctx.Repo.Repository.Id, issue.ID, 0, 0, models.COMMENT_TYPE_COMMENT, content, nil); err != nil {
|
||||||
send(500, nil, err)
|
send(500, nil, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -837,13 +845,13 @@ func Comment(ctx *middleware.Context) {
|
|||||||
ms[i] = ms[i][1:]
|
ms[i] = ms[i][1:]
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := models.UpdateMentions(ms, issue.Id); err != nil {
|
if err := models.UpdateMentions(ms, issue.ID); err != nil {
|
||||||
send(500, nil, err)
|
send(500, nil, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Trace("%s Comment created: %d", ctx.Req.RequestURI, issue.Id)
|
log.Trace("%s Comment created: %d", ctx.Req.RequestURI, issue.ID)
|
||||||
default:
|
default:
|
||||||
ctx.Handle(404, "issue.Comment", err)
|
ctx.Handle(404, "issue.Comment", err)
|
||||||
return
|
return
|
||||||
@@ -851,7 +859,7 @@ func Comment(ctx *middleware.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if comment != nil {
|
if comment != nil {
|
||||||
uploadFiles(ctx, issue.Id, comment.Id)
|
uploadFiles(ctx, issue.ID, comment.Id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Notify watchers.
|
// Notify watchers.
|
||||||
@@ -899,9 +907,19 @@ func Comment(ctx *middleware.Context) {
|
|||||||
send(200, fmt.Sprintf("%s/issues/%d", ctx.Repo.RepoLink, index), nil)
|
send(200, fmt.Sprintf("%s/issues/%d", ctx.Repo.RepoLink, index), nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Labels(ctx *middleware.Context) {
|
||||||
|
ctx.Data["Title"] = ctx.Tr("repo.labels")
|
||||||
|
ctx.Data["PageIsLabels"] = true
|
||||||
|
ctx.HTML(200, LABELS)
|
||||||
|
}
|
||||||
|
|
||||||
func NewLabel(ctx *middleware.Context, form auth.CreateLabelForm) {
|
func NewLabel(ctx *middleware.Context, form auth.CreateLabelForm) {
|
||||||
|
ctx.Data["Title"] = ctx.Tr("repo.labels")
|
||||||
|
ctx.Data["PageIsLabels"] = true
|
||||||
|
|
||||||
if ctx.HasError() {
|
if ctx.HasError() {
|
||||||
Issues(ctx)
|
ctx.Flash.Error(ctx.Data["ErrorMsg"].(string))
|
||||||
|
ctx.Redirect(ctx.Repo.RepoLink + "/labels")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -911,10 +929,10 @@ func NewLabel(ctx *middleware.Context, form auth.CreateLabelForm) {
|
|||||||
Color: form.Color,
|
Color: form.Color,
|
||||||
}
|
}
|
||||||
if err := models.NewLabel(l); err != nil {
|
if err := models.NewLabel(l); err != nil {
|
||||||
ctx.Handle(500, "issue.NewLabel(NewLabel)", err)
|
ctx.Handle(500, "NewLabel", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
ctx.Redirect(ctx.Repo.RepoLink + "/issues")
|
ctx.Redirect(ctx.Repo.RepoLink + "/labels")
|
||||||
}
|
}
|
||||||
|
|
||||||
func UpdateLabel(ctx *middleware.Context, form auth.CreateLabelForm) {
|
func UpdateLabel(ctx *middleware.Context, form auth.CreateLabelForm) {
|
||||||
@@ -925,7 +943,7 @@ func UpdateLabel(ctx *middleware.Context, form auth.CreateLabelForm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
l := &models.Label{
|
l := &models.Label{
|
||||||
Id: id,
|
ID: id,
|
||||||
Name: form.Title,
|
Name: form.Title,
|
||||||
Color: form.Color,
|
Color: form.Color,
|
||||||
}
|
}
|
||||||
@@ -1151,20 +1169,10 @@ func IssueGetAttachment(ctx *middleware.Context) {
|
|||||||
ctx.ServeFile(attachment.Path, "\""+attachment.Name+"\"")
|
ctx.ServeFile(attachment.Path, "\""+attachment.Name+"\"")
|
||||||
}
|
}
|
||||||
|
|
||||||
// testing route handler for new issue ui page
|
|
||||||
// todo : move to Issue() function
|
|
||||||
func Issues2(ctx *middleware.Context) {
|
|
||||||
ctx.HTML(200, "repo/issue2/list")
|
|
||||||
}
|
|
||||||
|
|
||||||
func PullRequest2(ctx *middleware.Context) {
|
func PullRequest2(ctx *middleware.Context) {
|
||||||
ctx.HTML(200, "repo/pr2/list")
|
ctx.HTML(200, "repo/pr2/list")
|
||||||
}
|
}
|
||||||
|
|
||||||
func Labels2(ctx *middleware.Context) {
|
|
||||||
ctx.HTML(200, "repo/issue2/labels")
|
|
||||||
}
|
|
||||||
|
|
||||||
func Milestones2(ctx *middleware.Context) {
|
func Milestones2(ctx *middleware.Context) {
|
||||||
ctx.HTML(200, "repo/milestone2/list")
|
ctx.HTML(200, "repo/milestone2/list")
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1 +1 @@
|
|||||||
0.6.1.0724 Beta
|
0.6.2.0724 Beta
|
||||||
@@ -29,6 +29,12 @@
|
|||||||
<script src="{{AppSubUrl}}/js/semantic.min.js?v={{AppVer}}"></script>
|
<script src="{{AppSubUrl}}/js/semantic.min.js?v={{AppVer}}"></script>
|
||||||
<script src="{{AppSubUrl}}/js/gogs.js?v={{AppVer}}"></script>
|
<script src="{{AppSubUrl}}/js/gogs.js?v={{AppVer}}"></script>
|
||||||
|
|
||||||
|
<!-- Third-party libraries -->
|
||||||
|
{{if .PageIsLabels}}
|
||||||
|
<link rel="stylesheet" href="{{AppSubUrl}}/css/jquery.minicolors.css?v={{AppVer}}">
|
||||||
|
<script src="{{AppSubUrl}}/js/libs/jquery.minicolors.min.js?v={{AppVer}}"></script>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
<title>{{if .Title}}{{.Title}} - {{end}}{{AppName}}</title>
|
<title>{{if .Title}}{{.Title}} - {{end}}{{AppName}}</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{{if .Flash}}
|
||||||
|
<div class="sixteen wide center aligned centered column">
|
||||||
|
{{template "base/alert" .}}
|
||||||
|
</div>
|
||||||
|
{{end}}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
{{template "base/head" .}}
|
||||||
|
<div class="repository labels">
|
||||||
|
{{template "repo/header" .}}
|
||||||
|
<div class="ui middle page grid body">
|
||||||
|
<div class="navbar">
|
||||||
|
{{template "repo/issue/navbar" .}}
|
||||||
|
{{if .IsRepositoryAdmin}}
|
||||||
|
<form class="ui right form" action="{{$.RepoLink}}/labels/new" method="post">
|
||||||
|
{{.CsrfTokenHtml}}
|
||||||
|
<div class="ui right floated secondary menu">
|
||||||
|
<div class="item">
|
||||||
|
<div class="ui large input">
|
||||||
|
<input class="new-label-input" name="title" placeholder="{{.i18n.Tr "repo.issues.new_label_placeholder"}}" required>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="item">
|
||||||
|
<div class="ui large input">
|
||||||
|
<input class="color-picker" name="color" value="#70c24a" required>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="item precolors">
|
||||||
|
<a class="color" style="background-color:#e11d21" data-color-hex="#e11d21"></a>
|
||||||
|
<a class="color" style="background-color:#eb6420" data-color-hex="#eb6420"></a>
|
||||||
|
<a class="color" style="background-color:#fbca04" data-color-hex="#fbca04"></a>
|
||||||
|
<a class="color" style="background-color:#009800" data-color-hex="#009800"></a>
|
||||||
|
<a class="color" style="background-color:#006b75" data-color-hex="#006b75"></a>
|
||||||
|
<a class="color" style="background-color:#207de5" data-color-hex="#207de5"></a>
|
||||||
|
<a class="color" style="background-color:#0052cc" data-color-hex="#0052cc"></a>
|
||||||
|
<a class="color" style="background-color:#53e917" data-color-hex="#53e917"></a>
|
||||||
|
<a class="color" style="background-color:#f6c6c7" data-color-hex="#f6c6c7"></a>
|
||||||
|
<a class="color" style="background-color:#fad8c7" data-color-hex="#fad8c7"></a>
|
||||||
|
<a class="color" style="background-color:#fef2c0" data-color-hex="#fef2c0"></a>
|
||||||
|
<a class="color" style="background-color:#bfe5bf" data-color-hex="#bfe5bf"></a>
|
||||||
|
<a class="color" style="background-color:#bfdadc" data-color-hex="#bfdadc"></a>
|
||||||
|
<a class="color" style="background-color:#c7def8" data-color-hex="#c7def8"></a>
|
||||||
|
<a class="color" style="background-color:#bfd4f2" data-color-hex="#bfd4f2"></a>
|
||||||
|
<a class="color" style="background-color:#d4c5f9" data-color-hex="#d4c5f9"></a>
|
||||||
|
</div>
|
||||||
|
<button class="ui green button">{{.i18n.Tr "repo.issues.new_label"}}</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{{end}}
|
||||||
|
</div>
|
||||||
|
<div class="ui divider"></div>
|
||||||
|
{{template "repo/issue/alert" .}}
|
||||||
|
<div class="ui left">
|
||||||
|
<div class="ui black label">{{.i18n.Tr "repo.issues.label_count" .NumLabels}}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="label list">
|
||||||
|
{{range .Labels}}
|
||||||
|
<li class="item">
|
||||||
|
<div class="ui label" style="background-color: {{.Color}}"><i class="octicon octicon-tag"></i> {{.Name}}</div>
|
||||||
|
{{if $.IsRepositoryAdmin}}
|
||||||
|
<a class="ui right" href="#"><i class="octicon octicon-x"></i> {{$.i18n.Tr "repo.issues.label_delete"}}</a>
|
||||||
|
<a class="ui right" href="#"><i class="octicon octicon-pencil"></i> {{$.i18n.Tr "repo.issues.label_edit"}}</a>
|
||||||
|
{{end}}
|
||||||
|
<a class="ui right open-issues" href="{{$.RepoLink}}/issues?labels={{.ID}}"><i class="octicon octicon-issue-opened"></i> {{$.i18n.Tr "repo.issues.label_open_issues" .NumOpenIssues}}</a>
|
||||||
|
</li>
|
||||||
|
{{end}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{template "base/footer" .}}
|
||||||
@@ -4,9 +4,11 @@
|
|||||||
<div class="ui middle page grid body">
|
<div class="ui middle page grid body">
|
||||||
<div class="navbar">
|
<div class="navbar">
|
||||||
{{template "repo/issue/navbar" .}}
|
{{template "repo/issue/navbar" .}}
|
||||||
|
{{if .IsRepositoryAdmin}}
|
||||||
<div class="ui right floated secondary menu">
|
<div class="ui right floated secondary menu">
|
||||||
<a class="ui green button" href="{{$.RepoLink}}/issues/new">{{.i18n.Tr "repo.issues.new"}}</a>
|
<a class="ui green button" href="{{$.RepoLink}}/issues/new">{{.i18n.Tr "repo.issues.new"}}</a>
|
||||||
</div>
|
</div>
|
||||||
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
<div class="ui divider"></div>
|
<div class="ui divider"></div>
|
||||||
<div class="ui left">
|
<div class="ui left">
|
||||||
@@ -29,7 +31,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
{{range .Labels}}
|
{{range .Labels}}
|
||||||
<a class="item" href="{{$.RepoLink}}/issues?type={{$.ViewType}}&state={{$.State}}&labels={{.Id}}"><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a>
|
<a class="item" href="{{$.RepoLink}}/issues?type={{$.ViewType}}&state={{$.State}}&labels={{.ID}}"><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -73,7 +75,7 @@
|
|||||||
{{range .Issues}}
|
{{range .Issues}}
|
||||||
{{ $timeStr:= TimeSince .Created $.Lang }}
|
{{ $timeStr:= TimeSince .Created $.Lang }}
|
||||||
<li class="item">
|
<li class="item">
|
||||||
<div class="ui {{if .IsRead}}black{{else}}green{{end}} label">#{{.Id}}</div>
|
<div class="ui {{if .IsRead}}black{{else}}green{{end}} label">#{{.Index}}</div>
|
||||||
<a class="title" href="{{$.RepoLink}}/issues/{{.Index}}">{{.Name}}</a>
|
<a class="title" href="{{$.RepoLink}}/issues/{{.Index}}">{{.Name}}</a>
|
||||||
{{if .NumComments}}<span class="comment ui right"><i class="octicon octicon-comment"></i> {{.NumComments}}</span>{{end}}
|
{{if .NumComments}}<span class="comment ui right"><i class="octicon octicon-comment"></i> {{.NumComments}}</span>{{end}}
|
||||||
<p class="desc">{{$.i18n.Tr "repo.issues.opened_by" $timeStr .Poster.Name|Str2html}}</p>
|
<p class="desc">{{$.i18n.Tr "repo.issues.opened_by" $timeStr .Poster.Name|Str2html}}</p>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="ui left">
|
<div class="ui left">
|
||||||
<div class="ui compact menu">
|
<div class="ui compact menu">
|
||||||
<a class="{{if .PageIsIssueList}}active{{end}} item" href="{{.RepoLink}}/issues">{{.i18n.Tr "repo.issues"}}</a>
|
<a class="{{if .PageIsIssueList}}active{{end}} item" href="{{.RepoLink}}/issues">{{.i18n.Tr "repo.issues"}}</a>
|
||||||
<a class="item" href="{{.RepoLink}}/labels">{{.i18n.Tr "repo.labels"}}</a>
|
<a class="{{if .PageIsLabels}}active{{end}} item" href="{{.RepoLink}}/labels">{{.i18n.Tr "repo.labels"}}</a>
|
||||||
<a class="item" href="{{.RepoLink}}/milestones">{{.i18n.Tr "repo.milestones"}}</a>
|
<a class="item" href="{{.RepoLink}}/milestones">{{.i18n.Tr "repo.milestones"}}</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -3,15 +3,15 @@
|
|||||||
{{template "repo/nav" .}}
|
{{template "repo/nav" .}}
|
||||||
{{template "repo/toolbar" .}}
|
{{template "repo/toolbar" .}}
|
||||||
<div id="body" class="container">
|
<div id="body" class="container">
|
||||||
<div id="issue" data-id="{{.Issue.Id}}">
|
<div id="issue" data-id="{{.Issue.ID}}">
|
||||||
<div id="issue-{{.Issue.Id}}" class="issue-whole issue-is-opening">
|
<div id="issue-{{.Issue.ID}}" class="issue-whole issue-is-opening">
|
||||||
<div class="issue-wrap col-md-10">
|
<div class="issue-wrap col-md-10">
|
||||||
<div class="issue-head clearfix">
|
<div class="issue-head clearfix">
|
||||||
<div class="number pull-right">#{{.Issue.Index}}</div>
|
<div class="number pull-right">#{{.Issue.Index}}</div>
|
||||||
<a class="author pull-left" href="{{AppSubUrl}}/{{.Issue.Poster.Name}}"><img class="avatar" src="{{.Issue.Poster.AvatarLink}}" alt="" width="30"/></a>
|
<a class="author pull-left" href="{{AppSubUrl}}/{{.Issue.Poster.Name}}"><img class="avatar" src="{{.Issue.Poster.AvatarLink}}" alt="" width="30"/></a>
|
||||||
<h1 class="title pull-left">{{.Issue.Name}}</h1>
|
<h1 class="title pull-left">{{.Issue.Name}}</h1>
|
||||||
<input id="issue-edit-title" class="form-control input-lg pull-left hidden" type="text" value="{{.Issue.Name}}" data-ajax-rel="issue-edit-save" data-ajax-val="val" data-ajax-field="title"/>
|
<input id="issue-edit-title" class="form-control input-lg pull-left hidden" type="text" value="{{.Issue.Name}}" data-ajax-rel="issue-edit-save" data-ajax-val="val" data-ajax-field="title"/>
|
||||||
<input type="hidden" value="{{.Issue.Id}}" data-ajax-rel="issue-edit-save" data-ajax-val="val" data-ajax-field="issue_id"/>
|
<input type="hidden" value="{{.Issue.ID}}" data-ajax-rel="issue-edit-save" data-ajax-val="val" data-ajax-field="issue_id"/>
|
||||||
<p class="info pull-left">
|
<p class="info pull-left">
|
||||||
{{if .IsIssueOwner}}<a class="btn btn-default pull-right issue-edit" href="#" id="issue-edit-btn">Edit</a>
|
{{if .IsIssueOwner}}<a class="btn btn-default pull-right issue-edit" href="#" id="issue-edit-btn">Edit</a>
|
||||||
<a class="btn btn-danger pull-right issue-edit-cancel hidden" href="#">Cancel</a>
|
<a class="btn btn-danger pull-right issue-edit-cancel hidden" href="#">Cancel</a>
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
<div class="dropdown-menu dropdown-menu-right no">
|
<div class="dropdown-menu dropdown-menu-right no">
|
||||||
<ul class="list-unstyled">
|
<ul class="list-unstyled">
|
||||||
{{range .Labels}}
|
{{range .Labels}}
|
||||||
<li class="{{if not .IsChecked}}no-{{end}}checked" data-id="{{.Id}}">
|
<li class="{{if not .IsChecked}}no-{{end}}checked" data-id="{{.ID}}">
|
||||||
{{if .IsChecked}}<span class="check pull-left"><i class="fa fa-check"></i></span>{{end}}
|
{{if .IsChecked}}<span class="check pull-left"><i class="fa fa-check"></i></span>{{end}}
|
||||||
<span class="color" style="background-color: {{.Color}}"></span>
|
<span class="color" style="background-color: {{.Color}}"></span>
|
||||||
<span class="name">{{.Name}}</span>
|
<span class="name">{{.Name}}</span>
|
||||||
@@ -191,7 +191,7 @@
|
|||||||
<h4>Labels</h4>
|
<h4>Labels</h4>
|
||||||
{{if .Issue.Labels}}
|
{{if .Issue.Labels}}
|
||||||
{{range .Issue.Labels}}
|
{{range .Issue.Labels}}
|
||||||
<p id="label-{{.Id}}" class="label-item label-white" style="background-color: {{.Color}}"><strong>{{.Name}}</strong></p>
|
<p id="label-{{.ID}}" class="label-item label-white" style="background-color: {{.Color}}"><strong>{{.Name}}</strong></p>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{else}}
|
{{else}}
|
||||||
<p>None yet</p>
|
<p>None yet</p>
|
||||||
|
|||||||
@@ -1,74 +0,0 @@
|
|||||||
{{template "ng/base/head" .}}
|
|
||||||
{{template "ng/base/header" .}}
|
|
||||||
<div id="repo-wrapper">
|
|
||||||
{{template "repo/header_old" .}}
|
|
||||||
<div class="issue-main container repo-wide-wrapper">
|
|
||||||
<ul id="issue-list-nav" class="menu menu-line">
|
|
||||||
<li><a href="#">Issue</a></li>
|
|
||||||
<li><a href="#">Pull Request</a></li>
|
|
||||||
<li class="current"><a href="#">Labels</a></li>
|
|
||||||
<li><a href="#">Milestones</a></li>
|
|
||||||
<li class="right" id="label-new"><a href="#"><button id="label-new-btn" class="btn btn-green text-bold">New Label</button></a></li>
|
|
||||||
</ul>
|
|
||||||
<form id="label-add-form" action="#" class="form clear hidden">
|
|
||||||
<input type="text" class="ipt" name="name" placeholder="label name" id="label-add-name"/>
|
|
||||||
<div class="inline down drop label-color-drop">
|
|
||||||
<label for="label-add-color"></label>
|
|
||||||
<input class="ipt" name="color" type="text" placeholder="color" id="label-add-color"/>
|
|
||||||
<div class="drop-down">
|
|
||||||
<a href="#" class="color" style="background: red"></a>
|
|
||||||
<a href="#" class="color" style="background: green"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<button class="btn btn-gray right" type="button" id="label-cancel-btn">Cancel</button>
|
|
||||||
<button class="btn btn-green right" id="label-add-btn">Create</button>
|
|
||||||
</form>
|
|
||||||
<div id="issue-list-container">
|
|
||||||
<div id="issue-list-menu">
|
|
||||||
<div class="left"><span class="label label-black" id="labels-num">6</span><strong>Labels</strong></div>
|
|
||||||
<div class="clear"></div>
|
|
||||||
</div>
|
|
||||||
<ul id="label-list" class="list-no-style">
|
|
||||||
<li class="item" id="label-id">
|
|
||||||
<a class="right delete" href="#"><i class="octicon octicon-x"></i>Delete</a>
|
|
||||||
<a class="right edit" href="#"><i class="octicon octicon-pencil"></i>Edit</a>
|
|
||||||
<a class="right issue-num" href="#"><i class="octicon octicon-issue-opened"></i><strong class="num">12</strong>Issues</a>
|
|
||||||
<a class="left label clear" href="#" style="background-color: #0052cc" data-color-hex="#0052cc"><i class="octicon octicon-tag"></i><strong>bug</strong></a>
|
|
||||||
</li>
|
|
||||||
<li class="item" id="label-id">
|
|
||||||
<a class="right" href="#"><i class="octicon octicon-x"></i>Delete</a>
|
|
||||||
<a class="right" href="#"><i class="octicon octicon-pencil"></i>Edit</a>
|
|
||||||
<a class="right issue-num" href="#"><i class="octicon octicon-issue-opened"></i><strong class="num">12</strong>Issues</a>
|
|
||||||
<a class="left label clear" href="#" style="background-color: red"><i class="octicon octicon-tag"></i><strong>bug</strong></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div id="label-edit-form-tpl" class="hidden">
|
|
||||||
<li class="item"><form id="label-edit-form" action="#" class="form clear">
|
|
||||||
<input type="text" class="ipt" name="name" placeholder="label name" id="label-edit-name"/>
|
|
||||||
<input type="hidden" name="id" value="id"/>
|
|
||||||
<div class="inline down drop label-color-drop">
|
|
||||||
<label for="label-add-color"></label>
|
|
||||||
<input class="ipt" name="color" type="text" placeholder="color" id="label-edit-color"/>
|
|
||||||
<div class="drop-down">
|
|
||||||
<a href="#" class="color" style="background: red"></a>
|
|
||||||
<a href="#" class="color" style="background: green"></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<button class="btn btn-gray right" type="button" id="label-edit-cancel-btn">Cancel</button>
|
|
||||||
<button class="btn btn-green right" id="label-edit-btn">Save Changes</button>
|
|
||||||
</form></li>
|
|
||||||
</div>
|
|
||||||
<div id="label-delete-form-tpl" class="hidden">
|
|
||||||
<li class="item">
|
|
||||||
<form id="label-delete-form" action="#">
|
|
||||||
<input type="hidden" name="id" value="id"/>
|
|
||||||
<span><strong class="text-red">Are you sure?</strong> Deleting a label will remove it from all issues and pull requests.</span>
|
|
||||||
<button class="btn btn-gray right" type="button" id="label-del-cancel-btn">Cancel</button>
|
|
||||||
<button class="btn btn-red right" id="label-del-btn">Delete</button>
|
|
||||||
</form>
|
|
||||||
</li>
|
|
||||||
</div>
|
|
||||||
{{template "ng/base/footer" .}}
|
|
||||||
Reference in new issue
Block a user