Fix a bunch of smaller glitches.

This commit is contained in:
Riyad Preukschas 2012-12-03 21:43:17 +01:00
parent 7978f8dd2b
commit 4ed8278870
4 changed files with 85 additions and 114 deletions

View file

@ -58,12 +58,6 @@ var NoteList = {
".js-close-discussion-note-form", ".js-close-discussion-note-form",
NoteList.removeDiscussionNoteForm); NoteList.removeDiscussionNoteForm);
// do some specific housekeeping when removing a diff or discussion note
$(document).on("click",
".diff_file .js-note-delete," +
".discussion .js-note-delete",
NoteList.removeDiscussionNote);
// remove a note (in general) // remove a note (in general)
$(document).on("click", $(document).on("click",
".js-note-delete", ".js-note-delete",
@ -96,9 +90,6 @@ var NoteList = {
previewContainer.removeClass("on"); previewContainer.removeClass("on");
} }
form.find(".js-note-text").val("").trigger("input"); form.find(".js-note-text").val("").trigger("input");
// re-enable submit button
form.find(".js-comment-button").enable();
}, },
/** /**
@ -144,8 +135,6 @@ var NoteList = {
var preview = form.find('.js-note-preview'); var preview = form.find('.js-note-preview');
var noteText = form.find('.js-note-text').val(); var noteText = form.find('.js-note-text').val();
console.log("preview", noteText);
if(noteText.trim().length === 0) { if(noteText.trim().length === 0) {
preview.text('Nothing to preview.'); preview.text('Nothing to preview.');
} else { } else {
@ -157,36 +146,13 @@ var NoteList = {
} }
}, },
/**
* Called in response to deleting a note on a diff line.
*
* Removes the actual note from view.
* Removes the whole notes row if the last note for that line is being removed.
*
* Note: must be called before removeNote()
*/
removeDiscussionNote: function() {
var notes = $(this).closest(".notes");
// check if this is the last note for this line
if (notes.find(".note").length === 1) {
// for discussions
notes.closest(".discussion").remove();
// for diff lines
notes.closest("tr").remove();
}
},
/** /**
* Called in response to "cancel" on a diff note form. * Called in response to "cancel" on a diff note form.
* *
* Shows the reply button again. * Shows the reply button again.
* Removes the form and if necessary it's temporary row. * Removes the form and if necessary it's temporary row.
*/ */
removeDiscussionNoteForm: function(e) { removeDiscussionNoteForm: function() {
e.preventDefault();
var form = $(this).closest("form"); var form = $(this).closest("form");
var row = form.closest("tr"); var row = form.closest("tr");
@ -206,9 +172,22 @@ var NoteList = {
* Called in response to deleting a note of any kind. * Called in response to deleting a note of any kind.
* *
* Removes the actual note from view. * Removes the actual note from view.
* Removes the whole discussion if the last note is being removed.
*/ */
removeNote: function() { removeNote: function() {
$(this).closest(".note").remove(); var note = $(this).closest(".note");
var notes = note.closest(".notes");
// check if this is the last note for this line
if (notes.find(".note").length === 1) {
// for discussions
notes.closest(".discussion").remove();
// for diff lines
notes.closest("tr").remove();
}
note.remove();
NoteList.updateVotes(); NoteList.updateVotes();
}, },
@ -274,6 +253,7 @@ var NoteList = {
NoteList.setupNoteForm(form); NoteList.setupNoteForm(form);
form.find(".js-note-text").focus();
}, },
/** /**
@ -312,16 +292,18 @@ var NoteList = {
setupNoteForm: function(form) { setupNoteForm: function(form) {
disableButtonIfEmptyField(form.find(".js-note-text"), form.find(".js-comment-button")); disableButtonIfEmptyField(form.find(".js-note-text"), form.find(".js-comment-button"));
// setup preview buttons form.removeClass("js-new-note-form");
$(".js-note-edit-button, .js-note-preview-button").tooltip({ placement: 'left' });
previewButton = $(".js-note-preview-button"); // setup preview buttons
previewButton.hide(); form.find(".js-note-edit-button, .js-note-preview-button")
.tooltip({ placement: 'left' });
previewButton = form.find(".js-note-preview-button");
form.find(".js-note-text").on("input", function() { form.find(".js-note-text").on("input", function() {
if ($(this).val().trim() !== "") { if ($(this).val().trim() !== "") {
previewButton.fadeIn(); previewButton.removeClass("turn-off").addClass("turn-on");
} else { } else {
previewButton.fadeOut(); previewButton.removeClass("turn-on").addClass("turn-off");
} }
}); });
@ -344,8 +326,8 @@ var NoteList = {
$.ajax({ $.ajax({
url: NoteList.notes_path, url: NoteList.notes_path,
data: NoteList.target_params, data: NoteList.target_params,
complete: function(){ $('.notes-status').removeClass("loading")}, complete: function(){ $('.js-notes-busy').removeClass("loading")},
beforeSend: function() { $('.notes-status').addClass("loading") }, beforeSend: function() { $('.js-notes-busy').addClass("loading") },
dataType: "script" dataType: "script"
}); });
}, },
@ -404,8 +386,8 @@ var NoteList = {
$.ajax({ $.ajax({
url: NoteList.notes_path, url: NoteList.notes_path,
data: NoteList.target_params + "&loading_more=1&" + (NoteList.reversed ? "before_id" : "after_id") + "=" + NoteList.bottom_id, data: NoteList.target_params + "&loading_more=1&" + (NoteList.reversed ? "before_id" : "after_id") + "=" + NoteList.bottom_id,
complete: function(){ $('.notes-status').removeClass("loading")}, complete: function(){ $('.js-notes-busy').removeClass("loading")},
beforeSend: function() { $('.notes-status').addClass("loading") }, beforeSend: function() { $('.js-notes-busy').addClass("loading") },
dataType: "script" dataType: "script"
}); });
}, },

View file

@ -135,9 +135,12 @@ ul.notes {
} }
} }
/** /**
* Discussion/Note Actions * Actions for Discussions/Notes
*/ */
.discussion, .discussion,
.note { .note {
&.note:hover { &.note:hover {
@ -174,33 +177,12 @@ ul.notes {
top: 0; top: 0;
} }
// TODO: start cleaup
.issue_notes,
.wiki_notes {
.note_content {
float: left;
width: 400px;
}
}
/* for loading indicator */
.notes-status {
margin: 18px;
}
p.notify_controls input{
margin: 5px;
}
p.notify_controls span{
font-weight: 700;
}
// TODO: end cleaup
/** /**
* line note button on the side of diffs * Line note button on the side of diffs
*/ */
.diff_file tr.line_holder { .diff_file tr.line_holder {
.add-diff-note { .add-diff-note {
background: url("diff_note_add.png") no-repeat left 0; background: url("diff_note_add.png") no-repeat left 0;
@ -231,8 +213,10 @@ p.notify_controls span{
} }
} }
/** /**
* Note Forms * Note Form
*/ */
.comment-btn, .comment-btn,
@ -257,6 +241,46 @@ p.notify_controls span{
line-height: 32px; line-height: 32px;
padding-right: 15px; padding-right: 15px;
} }
// TODO: start cleanup
.attachments {
position: relative;
width: 350px;
height: 50px;
overflow: hidden;
margin:0 0 5px !important;
.input_file {
.file_name {
line-height: 30px;
width: 240px;
height: 28px;
overflow: hidden;
}
.file_upload {
position: absolute;
right:14px;
top:7px;
}
.input-file {
width: 260px;
height: 41px;
float: right;
}
}
}
.input-file {
font: 500px monospace;
opacity:0;
filter: alpha(opacity=0);
position: absolute;
z-index: 1;
top:0;
right:0;
padding:0;
margin: 0;
}
// TODO: end cleanup
} }
.note_text_and_preview { .note_text_and_preview {
// makes the "absolute" position for links relative to this // makes the "absolute" position for links relative to this
@ -282,44 +306,9 @@ p.notify_controls span{
width: 98.6%; width: 98.6%;
} }
} }
}
// TODO: start cleanup
.attachments { /* loading indicator */
position: relative; .notes-busy {
width: 350px; margin: 18px;
height: 50px;
overflow: hidden;
margin:0 0 5px !important;
.input_file {
.file_name {
line-height: 30px;
width: 240px;
height: 28px;
overflow: hidden;
}
.file_upload {
position: absolute;
right:14px;
top:7px;
}
.input-file {
width: 260px;
height: 41px;
float: right;
}
}
}
.input-file {
font: 500px monospace;
opacity:0;
filter: alpha(opacity=0);
position: absolute;
z-index: 1;
top:0;
right:0;
padding:0;
margin: 0;
}
// TODO: end cleanup
} }

View file

@ -61,4 +61,4 @@
= markdown @issue.description = markdown @issue.description
.issue_notes.voting_notes#notes= render "notes/notes_with_form" .voting_notes#notes= render "notes/notes_with_form"

View file

@ -6,7 +6,7 @@
= f.hidden_field :noteable_type = f.hidden_field :noteable_type
.note_text_and_preview.js-toggler-container .note_text_and_preview.js-toggler-container
%a.js-note-preview-button.js-toggler-target.turn-on{ href: "javascript:;", data: {title: "Preview", url: preview_project_notes_path(@project)} } %a.js-note-preview-button.js-toggler-target.turn-off{ href: "javascript:;", data: {title: "Preview", url: preview_project_notes_path(@project)} }
%i.icon-eye-open %i.icon-eye-open
%a.js-note-edit-button.js-toggler-target.turn-off{ href: "javascript:;", data: {title: "Edit"} } %a.js-note-edit-button.js-toggler-target.turn-off{ href: "javascript:;", data: {title: "Edit"} }
%i.icon-edit %i.icon-edit
@ -37,7 +37,7 @@
= check_box_tag :notify, 1, !@note.for_commit? = check_box_tag :notify, 1, !@note.for_commit?
%span Project team %span Project team
- if @note.notify_only_author?(current_user) - if @note.notify_only_author?(current_user) # FIXME: put in JS
= label_tag :notify_author do = label_tag :notify_author do
= check_box_tag :notify_author, 1 , !@note.for_commit? = check_box_tag :notify_author, 1 , !@note.for_commit?
%span Commit author %span Commit author