Przeglądaj źródła

This closes #825, closes #829, closes #830, fix issue when get and add comments on multi authors

xuri 4 lat temu
rodzic
commit
a13ef5545e
2 zmienionych plików z 12 dodań i 13 usunięć
  1. 10 11
      comment.go
  2. 2 2
      xmlComments.go

+ 10 - 11
comment.go

@@ -43,15 +43,15 @@ func (f *File) GetComments() (comments map[string][]Comment) {
 		if target == "" {
 			continue
 		}
-		if !filepath.IsAbs(target) {
+		if !strings.HasPrefix(target, "/") {
 			target = "xl" + strings.TrimPrefix(target, "..")
 		}
 		if d := f.commentsReader(strings.TrimPrefix(target, "/")); d != nil {
 			sheetComments := []Comment{}
 			for _, comment := range d.CommentList.Comment {
 				sheetComment := Comment{}
-				if comment.AuthorID < len(d.Authors) {
-					sheetComment.Author = d.Authors[comment.AuthorID].Author
+				if comment.AuthorID < len(d.Authors.Author) {
+					sheetComment.Author = d.Authors.Author[comment.AuthorID]
 				}
 				sheetComment.Ref = comment.Ref
 				sheetComment.AuthorID = comment.AuthorID
@@ -250,20 +250,19 @@ func (f *File) addComment(commentsXML, cell string, formatSet *formatComment) {
 		t = t[0:32512]
 	}
 	comments := f.commentsReader(commentsXML)
+	authorID := 0
 	if comments == nil {
-		comments = &xlsxComments{
-			Authors: []xlsxAuthor{
-				{
-					Author: formatSet.Author,
-				},
-			},
-		}
+		comments = &xlsxComments{Authors: xlsxAuthor{Author: []string{formatSet.Author}}}
+	}
+	if inStrSlice(comments.Authors.Author, formatSet.Author) == -1 {
+		comments.Authors.Author = append(comments.Authors.Author, formatSet.Author)
+		authorID = len(comments.Authors.Author) - 1
 	}
 	defaultFont := f.GetDefaultFont()
 	bold := ""
 	cmt := xlsxComment{
 		Ref:      cell,
-		AuthorID: 0,
+		AuthorID: authorID,
 		Text: xlsxText{
 			R: []xlsxR{
 				{

+ 2 - 2
xmlComments.go

@@ -24,7 +24,7 @@ import "encoding/xml"
 // something special about the cell.
 type xlsxComments struct {
 	XMLName     xml.Name        `xml:"http://schemas.openxmlformats.org/spreadsheetml/2006/main comments"`
-	Authors     []xlsxAuthor    `xml:"authors"`
+	Authors     xlsxAuthor      `xml:"authors"`
 	CommentList xlsxCommentList `xml:"commentList"`
 }
 
@@ -33,7 +33,7 @@ type xlsxComments struct {
 // have an author. The maximum length of the author string is an implementation
 // detail, but a good guideline is 255 chars.
 type xlsxAuthor struct {
-	Author string `xml:"author"`
+	Author []string `xml:"author"`
 }
 
 // xlsxCommentList (List of Comments) directly maps the xlsxCommentList element.