Commit 4ed8278870640017b93f18b476532824eba70ac2
1 parent
7978f8dd
Exists in
master
and in
4 other branches
Fix a bunch of smaller glitches.
Showing
4 changed files
with
83 additions
and
112 deletions
Show diff stats
app/assets/javascripts/notes.js
... | ... | @@ -58,12 +58,6 @@ var NoteList = { |
58 | 58 | ".js-close-discussion-note-form", |
59 | 59 | NoteList.removeDiscussionNoteForm); |
60 | 60 | |
61 | - // do some specific housekeeping when removing a diff or discussion note | |
62 | - $(document).on("click", | |
63 | - ".diff_file .js-note-delete," + | |
64 | - ".discussion .js-note-delete", | |
65 | - NoteList.removeDiscussionNote); | |
66 | - | |
67 | 61 | // remove a note (in general) |
68 | 62 | $(document).on("click", |
69 | 63 | ".js-note-delete", |
... | ... | @@ -96,9 +90,6 @@ var NoteList = { |
96 | 90 | previewContainer.removeClass("on"); |
97 | 91 | } |
98 | 92 | form.find(".js-note-text").val("").trigger("input"); |
99 | - | |
100 | - // re-enable submit button | |
101 | - form.find(".js-comment-button").enable(); | |
102 | 93 | }, |
103 | 94 | |
104 | 95 | /** |
... | ... | @@ -144,8 +135,6 @@ var NoteList = { |
144 | 135 | var preview = form.find('.js-note-preview'); |
145 | 136 | var noteText = form.find('.js-note-text').val(); |
146 | 137 | |
147 | - console.log("preview", noteText); | |
148 | - | |
149 | 138 | if(noteText.trim().length === 0) { |
150 | 139 | preview.text('Nothing to preview.'); |
151 | 140 | } else { |
... | ... | @@ -158,35 +147,12 @@ var NoteList = { |
158 | 147 | }, |
159 | 148 | |
160 | 149 | /** |
161 | - * Called in response to deleting a note on a diff line. | |
162 | - * | |
163 | - * Removes the actual note from view. | |
164 | - * Removes the whole notes row if the last note for that line is being removed. | |
165 | - * | |
166 | - * Note: must be called before removeNote() | |
167 | - */ | |
168 | - removeDiscussionNote: function() { | |
169 | - var notes = $(this).closest(".notes"); | |
170 | - | |
171 | - // check if this is the last note for this line | |
172 | - if (notes.find(".note").length === 1) { | |
173 | - // for discussions | |
174 | - notes.closest(".discussion").remove(); | |
175 | - | |
176 | - // for diff lines | |
177 | - notes.closest("tr").remove(); | |
178 | - } | |
179 | - }, | |
180 | - | |
181 | - /** | |
182 | 150 | * Called in response to "cancel" on a diff note form. |
183 | 151 | * |
184 | 152 | * Shows the reply button again. |
185 | 153 | * Removes the form and if necessary it's temporary row. |
186 | 154 | */ |
187 | - removeDiscussionNoteForm: function(e) { | |
188 | - e.preventDefault(); | |
189 | - | |
155 | + removeDiscussionNoteForm: function() { | |
190 | 156 | var form = $(this).closest("form"); |
191 | 157 | var row = form.closest("tr"); |
192 | 158 | |
... | ... | @@ -206,9 +172,22 @@ var NoteList = { |
206 | 172 | * Called in response to deleting a note of any kind. |
207 | 173 | * |
208 | 174 | * Removes the actual note from view. |
175 | + * Removes the whole discussion if the last note is being removed. | |
209 | 176 | */ |
210 | 177 | removeNote: function() { |
211 | - $(this).closest(".note").remove(); | |
178 | + var note = $(this).closest(".note"); | |
179 | + var notes = note.closest(".notes"); | |
180 | + | |
181 | + // check if this is the last note for this line | |
182 | + if (notes.find(".note").length === 1) { | |
183 | + // for discussions | |
184 | + notes.closest(".discussion").remove(); | |
185 | + | |
186 | + // for diff lines | |
187 | + notes.closest("tr").remove(); | |
188 | + } | |
189 | + | |
190 | + note.remove(); | |
212 | 191 | NoteList.updateVotes(); |
213 | 192 | }, |
214 | 193 | |
... | ... | @@ -274,6 +253,7 @@ var NoteList = { |
274 | 253 | |
275 | 254 | NoteList.setupNoteForm(form); |
276 | 255 | |
256 | + form.find(".js-note-text").focus(); | |
277 | 257 | }, |
278 | 258 | |
279 | 259 | /** |
... | ... | @@ -312,16 +292,18 @@ var NoteList = { |
312 | 292 | setupNoteForm: function(form) { |
313 | 293 | disableButtonIfEmptyField(form.find(".js-note-text"), form.find(".js-comment-button")); |
314 | 294 | |
295 | + form.removeClass("js-new-note-form"); | |
296 | + | |
315 | 297 | // setup preview buttons |
316 | - $(".js-note-edit-button, .js-note-preview-button").tooltip({ placement: 'left' }); | |
298 | + form.find(".js-note-edit-button, .js-note-preview-button") | |
299 | + .tooltip({ placement: 'left' }); | |
317 | 300 | |
318 | - previewButton = $(".js-note-preview-button"); | |
319 | - previewButton.hide(); | |
301 | + previewButton = form.find(".js-note-preview-button"); | |
320 | 302 | form.find(".js-note-text").on("input", function() { |
321 | 303 | if ($(this).val().trim() !== "") { |
322 | - previewButton.fadeIn(); | |
304 | + previewButton.removeClass("turn-off").addClass("turn-on"); | |
323 | 305 | } else { |
324 | - previewButton.fadeOut(); | |
306 | + previewButton.removeClass("turn-on").addClass("turn-off"); | |
325 | 307 | } |
326 | 308 | }); |
327 | 309 | |
... | ... | @@ -344,8 +326,8 @@ var NoteList = { |
344 | 326 | $.ajax({ |
345 | 327 | url: NoteList.notes_path, |
346 | 328 | data: NoteList.target_params, |
347 | - complete: function(){ $('.notes-status').removeClass("loading")}, | |
348 | - beforeSend: function() { $('.notes-status').addClass("loading") }, | |
329 | + complete: function(){ $('.js-notes-busy').removeClass("loading")}, | |
330 | + beforeSend: function() { $('.js-notes-busy').addClass("loading") }, | |
349 | 331 | dataType: "script" |
350 | 332 | }); |
351 | 333 | }, |
... | ... | @@ -404,8 +386,8 @@ var NoteList = { |
404 | 386 | $.ajax({ |
405 | 387 | url: NoteList.notes_path, |
406 | 388 | data: NoteList.target_params + "&loading_more=1&" + (NoteList.reversed ? "before_id" : "after_id") + "=" + NoteList.bottom_id, |
407 | - complete: function(){ $('.notes-status').removeClass("loading")}, | |
408 | - beforeSend: function() { $('.notes-status').addClass("loading") }, | |
389 | + complete: function(){ $('.js-notes-busy').removeClass("loading")}, | |
390 | + beforeSend: function() { $('.js-notes-busy').addClass("loading") }, | |
409 | 391 | dataType: "script" |
410 | 392 | }); |
411 | 393 | }, | ... | ... |
app/assets/stylesheets/sections/notes.scss
... | ... | @@ -135,9 +135,12 @@ ul.notes { |
135 | 135 | } |
136 | 136 | } |
137 | 137 | |
138 | + | |
139 | + | |
138 | 140 | /** |
139 | - * Discussion/Note Actions | |
141 | + * Actions for Discussions/Notes | |
140 | 142 | */ |
143 | + | |
141 | 144 | .discussion, |
142 | 145 | .note { |
143 | 146 | &.note:hover { |
... | ... | @@ -174,33 +177,12 @@ ul.notes { |
174 | 177 | top: 0; |
175 | 178 | } |
176 | 179 | |
177 | -// TODO: start cleaup | |
178 | -.issue_notes, | |
179 | -.wiki_notes { | |
180 | - .note_content { | |
181 | - float: left; | |
182 | - width: 400px; | |
183 | - } | |
184 | -} | |
185 | - | |
186 | -/* for loading indicator */ | |
187 | -.notes-status { | |
188 | - margin: 18px; | |
189 | -} | |
190 | 180 | |
191 | 181 | |
192 | -p.notify_controls input{ | |
193 | - margin: 5px; | |
194 | -} | |
195 | - | |
196 | -p.notify_controls span{ | |
197 | - font-weight: 700; | |
198 | -} | |
199 | -// TODO: end cleaup | |
200 | - | |
201 | 182 | /** |
202 | - * line note button on the side of diffs | |
183 | + * Line note button on the side of diffs | |
203 | 184 | */ |
185 | + | |
204 | 186 | .diff_file tr.line_holder { |
205 | 187 | .add-diff-note { |
206 | 188 | background: url("diff_note_add.png") no-repeat left 0; |
... | ... | @@ -231,8 +213,10 @@ p.notify_controls span{ |
231 | 213 | } |
232 | 214 | } |
233 | 215 | |
216 | + | |
217 | + | |
234 | 218 | /** |
235 | - * Note Forms | |
219 | + * Note Form | |
236 | 220 | */ |
237 | 221 | |
238 | 222 | .comment-btn, |
... | ... | @@ -257,6 +241,46 @@ p.notify_controls span{ |
257 | 241 | line-height: 32px; |
258 | 242 | padding-right: 15px; |
259 | 243 | } |
244 | + | |
245 | + // TODO: start cleanup | |
246 | + .attachments { | |
247 | + position: relative; | |
248 | + width: 350px; | |
249 | + height: 50px; | |
250 | + overflow: hidden; | |
251 | + margin:0 0 5px !important; | |
252 | + | |
253 | + .input_file { | |
254 | + .file_name { | |
255 | + line-height: 30px; | |
256 | + width: 240px; | |
257 | + height: 28px; | |
258 | + overflow: hidden; | |
259 | + } | |
260 | + .file_upload { | |
261 | + position: absolute; | |
262 | + right:14px; | |
263 | + top:7px; | |
264 | + } | |
265 | + .input-file { | |
266 | + width: 260px; | |
267 | + height: 41px; | |
268 | + float: right; | |
269 | + } | |
270 | + } | |
271 | + } | |
272 | + .input-file { | |
273 | + font: 500px monospace; | |
274 | + opacity:0; | |
275 | + filter: alpha(opacity=0); | |
276 | + position: absolute; | |
277 | + z-index: 1; | |
278 | + top:0; | |
279 | + right:0; | |
280 | + padding:0; | |
281 | + margin: 0; | |
282 | + } | |
283 | + // TODO: end cleanup | |
260 | 284 | } |
261 | 285 | .note_text_and_preview { |
262 | 286 | // makes the "absolute" position for links relative to this |
... | ... | @@ -282,44 +306,9 @@ p.notify_controls span{ |
282 | 306 | width: 98.6%; |
283 | 307 | } |
284 | 308 | } |
309 | +} | |
285 | 310 | |
286 | - // TODO: start cleanup | |
287 | - .attachments { | |
288 | - position: relative; | |
289 | - width: 350px; | |
290 | - height: 50px; | |
291 | - overflow: hidden; | |
292 | - margin:0 0 5px !important; | |
293 | - | |
294 | - .input_file { | |
295 | - .file_name { | |
296 | - line-height: 30px; | |
297 | - width: 240px; | |
298 | - height: 28px; | |
299 | - overflow: hidden; | |
300 | - } | |
301 | - .file_upload { | |
302 | - position: absolute; | |
303 | - right:14px; | |
304 | - top:7px; | |
305 | - } | |
306 | - .input-file { | |
307 | - width: 260px; | |
308 | - height: 41px; | |
309 | - float: right; | |
310 | - } | |
311 | - } | |
312 | - } | |
313 | - .input-file { | |
314 | - font: 500px monospace; | |
315 | - opacity:0; | |
316 | - filter: alpha(opacity=0); | |
317 | - position: absolute; | |
318 | - z-index: 1; | |
319 | - top:0; | |
320 | - right:0; | |
321 | - padding:0; | |
322 | - margin: 0; | |
323 | - } | |
324 | - // TODO: end cleanup | |
311 | +/* loading indicator */ | |
312 | +.notes-busy { | |
313 | + margin: 18px; | |
325 | 314 | } | ... | ... |
app/views/issues/show.html.haml
app/views/notes/_form.html.haml
... | ... | @@ -6,7 +6,7 @@ |
6 | 6 | = f.hidden_field :noteable_type |
7 | 7 | |
8 | 8 | .note_text_and_preview.js-toggler-container |
9 | - %a.js-note-preview-button.js-toggler-target.turn-on{ href: "javascript:;", data: {title: "Preview", url: preview_project_notes_path(@project)} } | |
9 | + %a.js-note-preview-button.js-toggler-target.turn-off{ href: "javascript:;", data: {title: "Preview", url: preview_project_notes_path(@project)} } | |
10 | 10 | %i.icon-eye-open |
11 | 11 | %a.js-note-edit-button.js-toggler-target.turn-off{ href: "javascript:;", data: {title: "Edit"} } |
12 | 12 | %i.icon-edit |
... | ... | @@ -37,7 +37,7 @@ |
37 | 37 | = check_box_tag :notify, 1, !@note.for_commit? |
38 | 38 | %span Project team |
39 | 39 | |
40 | - - if @note.notify_only_author?(current_user) | |
40 | + - if @note.notify_only_author?(current_user) # FIXME: put in JS | |
41 | 41 | = label_tag :notify_author do |
42 | 42 | = check_box_tag :notify_author, 1 , !@note.for_commit? |
43 | 43 | %span Commit author | ... | ... |