Browse Source

add comment form UI

Unknwon 9 years ago
parent
commit
ab2d0b3b44

+ 4 - 0
conf/locale/locale_en-US.ini

@@ -406,6 +406,10 @@ issues.open_title = Open
 issues.closed_title = Closed
 issues.num_comments = %d comments
 issues.commented_at = commented at <a href="%s">%s</a>
+issues.no_content = There is no content if this issue.
+issues.close_issue = Close
+issues.close_comment_issue = Close and comment
+issues.create_comment = Comment
 issues.label_title = Label name
 issues.label_color = Label color
 issues.label_count = %d labels

+ 6 - 10
models/issue.go

@@ -160,12 +160,9 @@ func (i *Issue) GetAssignee() (err error) {
 	return err
 }
 
-func (i *Issue) AfterDelete() {
-	_, err := DeleteAttachmentsByIssue(i.ID, true)
-
-	if err != nil {
-		log.Info("Could not delete files for issue #%d: %s", i.ID, err)
-	}
+// ReadBy sets issue to be read by given user.
+func (i *Issue) ReadBy(uid int64) error {
+	return UpdateIssueUserByRead(uid, i.ID)
 }
 
 // CreateIssue creates new issue with labels for repository.
@@ -625,10 +622,9 @@ func UpdateIssueUserByAssignee(issueID, assigneeID int64) (err error) {
 	return sess.Commit()
 }
 
-// UpdateIssueUserPairByRead updates issue-user pair for reading.
-func UpdateIssueUserPairByRead(uid, iid int64) error {
-	rawSql := "UPDATE `issue_user` SET is_read = ? WHERE uid = ? AND issue_id = ?"
-	_, err := x.Exec(rawSql, true, uid, iid)
+// UpdateIssueUserByRead updates issue-user relation for reading.
+func UpdateIssueUserByRead(uid, issueID int64) error {
+	_, err := x.Exec("UPDATE `issue_user` SET is_read=? WHERE uid=? AND issue_id=?", true, uid, issueID)
 	return err
 }
 

File diff suppressed because it is too large
+ 0 - 0
modules/bindata/bindata.go


File diff suppressed because it is too large
+ 0 - 0
public/css/gogs.min.css


+ 37 - 13
public/less/_repository.less

@@ -121,8 +121,10 @@
 	@comment-avatar-width: 3em;
 	&.new.issue {
 		.comment.form {
-			.comment .avatar {
-				width: @comment-avatar-width;
+			.comment {
+				.avatar {
+					width: @comment-avatar-width;
+				}
 			}
 			.content {
 				margin-left: 4em;
@@ -137,6 +139,7 @@
 					overflow-x: auto;
 				}
 			}
+
 		}
 	}
 	&.view.issue {
@@ -187,13 +190,31 @@
 					.markdown {
 						font-size: 14px;
 					}
-					.bottom.segment {
+					.no-content {
+						color: #767676;
+						font-style: italic;
+					}
+					> .bottom.segment {
 						background: #f3f4f5;
 						.ui.image {
 							max-height: 150px;
 						}
 					}
 				}
+
+				.ui.form {
+					.field:first-child {
+						clear: none;
+					}
+					.tab.segment {
+						border: none;
+				    padding: 0;
+				    padding-top: 10px;
+					}
+					textarea {
+						height: 200px;
+					}
+				}
 			}
 		}
 		.ui.segment.metas {
@@ -203,7 +224,7 @@
 	.comment.form {
 		.ui.comments {
 			margin-top: -12px;
-			max-width: 750px!important;
+			max-width: 100%;
 		}
 		.content {
 			.field:first-child {
@@ -218,15 +239,6 @@
 				height: 200px;
 			}
 		}
-		.dropzone {
-			width: 100%; 
-			margin-bottom: 10px;
-			border: 2px dashed #0087F7;
-			box-shadow: none;
-			.dz-error-message {
-				top: 140px;
-			}
-		}
 	}
 
 	.label.list {
@@ -352,6 +364,18 @@
 	}
 }
 
+.ui.comments {
+	.dropzone {
+		width: 100%; 
+		margin-bottom: 10px;
+		border: 2px dashed #0087F7;
+		box-shadow: none!important;
+		.dz-error-message {
+			top: 140px;
+		}
+	}
+}
+
 .settings .key.list {
 	.item:not(:first-child) {
 		border-top: 1px solid #eaeaea;

+ 5 - 5
routers/repo/issue.go

@@ -441,11 +441,11 @@ func ViewIssue(ctx *middleware.Context) {
 	}
 
 	if ctx.IsSigned {
-		// 	// Update issue-user.
-		// 	if err = models.UpdateIssueUserPairByRead(ctx.User.Id, issue.ID); err != nil {
-		// 		ctx.Handle(500, "UpdateIssueUserPairByRead: %v", err)
-		// 		return
-		// 	}
+		// Update issue-user.
+		if err = issue.ReadBy(ctx.User.Id); err != nil {
+			ctx.Handle(500, "ReadBy: %v", err)
+			return
+		}
 
 		if ctx.User.IsAdmin {
 			// labels, err := models.GetLabelsByRepoID(ctx.Repo.Repository.ID)

+ 16 - 0
templates/repo/issue/comment_tab.tmpl

@@ -0,0 +1,16 @@
+<div class="field">
+  <div class="ui top attached tabular menu">
+    <a class="active item" data-tab="write">{{.i18n.Tr "repo.release.write"}}</a>
+    <a class="item" data-tab="preview" data-url="/api/v1/markdown" data-context="{{.RepoLink}}">{{.i18n.Tr "repo.release.preview"}}</a>
+  </div>
+  <div class="ui bottom attached active tab segment" data-tab="write">
+    <textarea name="content"></textarea>
+  </div>
+  <div class="ui bottom attached tab segment markdown" data-tab="preview">
+    {{.i18n.Tr "repo.release.loading"}}
+  </div>
+</div>
+{{if .IsAttachmentEnabled}}
+<div class="attachments"></div>
+<div class="ui basic button dropzone" id="dropzone" data-upload-url="/issues/attachments" data-accepts="{{.AttachmentAllowedTypes}}" data-max-file="{{.AttachmentMaxFiles}}" data-max-size="2" data-default-message="{{.i18n.Tr "dropzone.default_message"}}" data-invalid-input-type="{{.i18n.Tr "dropzone.invalid_input_type"}}" data-file-too-big="{{.i18n.Tr "dropzone.file_too_big"}}" data-remove-file="{{.i18n.Tr "dropzone.remove_file"}}"></div>
+{{end}}

+ 1 - 16
templates/repo/issue/new_form.tmpl

@@ -15,22 +15,7 @@
 		      <div class="field">
 		      	<input name="title" placeholder="{{.i18n.Tr "repo.milestones.title"}}" value="{{.title}}" autofocus required>
 		      </div>
-		      <div class="field">
-			      <div class="ui top attached tabular menu">
-		          <a class="active item" data-tab="write">{{.i18n.Tr "repo.release.write"}}</a>
-		          <a class="item" data-tab="preview" data-url="/api/v1/markdown" data-context="{{.RepoLink}}">{{.i18n.Tr "repo.release.preview"}}</a>
-			      </div>
-			      <div class="ui bottom attached active tab segment" data-tab="write">
-		          <textarea name="content"></textarea>
-		        </div>
-			      <div class="ui bottom attached tab segment markdown" data-tab="preview">
-			        {{.i18n.Tr "repo.release.loading"}}
-			      </div>
-		      </div>
-		      {{if .IsAttachmentEnabled}}
-		      <div class="attachments"></div>
-		      <div class="ui basic button dropzone" id="dropzone" data-upload-url="/issues/attachments" data-accepts="{{.AttachmentAllowedTypes}}" data-max-file="{{.AttachmentMaxFiles}}" data-max-size="2" data-default-message="{{.i18n.Tr "dropzone.default_message"}}" data-invalid-input-type="{{.i18n.Tr "dropzone.invalid_input_type"}}" data-file-too-big="{{.i18n.Tr "dropzone.file_too_big"}}" data-remove-file="{{.i18n.Tr "dropzone.remove_file"}}"></div>
-		      {{end}}
+					{{template "repo/issue/comment_tab" .}}
 		      <div class="text right">
 						<button class="ui green button">
 							{{.i18n.Tr "repo.issues.create"}}

+ 24 - 1
templates/repo/issue/view_content.tmpl

@@ -32,19 +32,42 @@
 					  </div>
 					</div>
 			    <div class="ui attached segment markdown">
+			    	{{if .Issue.RenderedContent}}
 						{{.Issue.RenderedContent|Str2html}}
+			    	{{else}}
+						<span class="no-content">{{.i18n.Tr "repo.issues.no_content"}}</span>
+			    	{{end}}
 	  			</div>
 	  			{{if .Issue.Attachments}}
 					<div class="ui bottom attached segment">
 						<div class="ui small images">
 							{{range .Issue.Attachments}}
-						  <a href="/attachments/{{.UUID}}"><img class="ui image" src="/attachments/{{.UUID}}"></a>
+						  <a target="_blank" href="/attachments/{{.UUID}}"><img class="ui image" src="/attachments/{{.UUID}}"></a>
 						  {{end}}
 						</div>
 					</div>
 	  			{{end}}
 		    </div>
   		</div>
+
+		  <div class="comment form">
+		    <a class="avatar" href="{{.SignedUser.HomeLink}}">
+		      <img src="{{.SignedUser.AvatarLink}}">
+		    </a>
+		    <div class="content">
+			    <form class="ui segment form" action="{{.Link}}" method="post">
+						{{template "repo/issue/comment_tab" .}}
+			      <div class="text right">
+							<div class="ui red basic button" data-close="{{.i18n.Tr "repo.issues.close_issue"}}" data-close-and-comment="{{.i18n.Tr "repo.issues.close_comment_issue"}}">
+								{{.i18n.Tr "repo.issues.close_issue"}}
+							</div>
+							<div class="ui green button">
+								{{.i18n.Tr "repo.issues.create_comment"}}
+							</div>
+			      </div>
+			    </form>
+		    </div>
+		  </div>
   	</ui>
 	</div>
 

Some files were not shown because too many files changed in this diff