mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-16 23:30:12 +01:00
fix editing a note from the notes page
This commit is contained in:
parent
77e2ff0751
commit
94b5aa2346
10 changed files with 133 additions and 61 deletions
|
|
@ -63,13 +63,12 @@ class NotesController < ApplicationController
|
|||
end
|
||||
|
||||
def update
|
||||
note = current_user.notes.find(params['id'])
|
||||
note.attributes = params["note"]
|
||||
if note.save
|
||||
render :partial => 'notes', :object => note
|
||||
else
|
||||
notify :warning, "Couldn't update note \"#{note.id}\""
|
||||
render :text => ''
|
||||
@note = current_user.notes.find(params['id'])
|
||||
@note.attributes = params["note"]
|
||||
@saved = @note.save
|
||||
respond_to do |format|
|
||||
format.html
|
||||
format.js
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<%= stylesheet_link_tag 'standard','superfish','niftyCorners', 'jquery-ui-1.8.5.custom', :cache => true %>
|
||||
<%= stylesheet_link_tag 'standard','superfish','niftyCorners', 'jquery-ui-1.8.6.custom', :cache => true %>
|
||||
<%= stylesheet_link_tag "print", :media => "print" %>
|
||||
<%= javascript_include_tag 'jquery-1.4.4.min', 'jquery-ui-1.8.6.custom.min', 'jquery.truncator',
|
||||
'jquery.jeditable.mini', 'jquery.cookie', 'jquery.blockUI', 'jquery.form', :cache => 'jquery-all' %>
|
||||
|
|
|
|||
|
|
@ -4,39 +4,12 @@
|
|||
<h2><%= link_to(t('notes.note_header', :id => note.id.to_s), note_path(note), :title => t('notes.note_link_title', :id => note.id.to_s)) %></h2>
|
||||
|
||||
<div class="project_notes" id="<%= dom_id(note) %>">
|
||||
|
||||
<div class="note_boby"><%= format_note(note.body) %></div>
|
||||
|
||||
<div class="note_footer">
|
||||
<% # = link_to_remote(
|
||||
#image_tag("blank.png", :title =>t('notes.delete_note_title'), :class=>"delete_item", :id => "delete_note_"+note.id.to_s),
|
||||
#:url => note_path(note),
|
||||
#:html => {:class => 'delete_note', :title => "delete note"},
|
||||
#:method => :delete,
|
||||
#:confirm => t('notes.delete_confirmation', :id => note.id.to_s),
|
||||
#:before => visual_effect(:fade, dom_id(note, 'container'))) -
|
||||
%>
|
||||
|
||||
<%= link_to_delete_note(note, image_tag( "blank.png",:title => t('notes.delete_item_title'), :class=>"delete_item")) %>
|
||||
<%= link_to_edit_note(note, image_tag( "blank.png", :title => t('notes.edit_item_title'), :class=>"edit_item") ) %>
|
||||
|
||||
<%# link_to_function(image_tag( "blank.png", :title => t('notes.edit_item_title'), :class=>"edit_item"),
|
||||
#"$('##{dom_id(note)}').toggle(); $('##{dom_id(note, 'edit')}').show(); $('##{dom_id(note, 'edit_form')} textarea').focus();" ) + " | "
|
||||
%>
|
||||
|
||||
| <%= link_to("In: " + note.project.name, project_path(note.project), :class=>"footer_link" ) %> |
|
||||
|
||||
<%= Note.human_attribute_name('created_at') %>: <%= format_date(note.created_at) %>
|
||||
|
||||
<% if note.updated_at? -%>
|
||||
| <%= Note.human_attribute_name('updated_at') %>: <%= format_date(note.updated_at) %>
|
||||
<% end -%>
|
||||
</div>
|
||||
|
||||
<%= render :partial => "notes/note_details", :object => note %>
|
||||
</div>
|
||||
|
||||
<div id="<%= dom_id(note, 'edit') %>" class="edit-form" style="display:none;">
|
||||
<div id="<%= dom_id(note, 'edit') %>" class="note-edit-form" style="display:none;">
|
||||
<%= render :partial => "notes/note_edit_form", :object => note %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
16
app/views/notes/_note_details.rhtml
Normal file
16
app/views/notes/_note_details.rhtml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<% note = note_details -%>
|
||||
<div class="note_boby"><%= format_note(note.body) %></div>
|
||||
|
||||
<div class="note_footer">
|
||||
|
||||
<%= link_to_delete_note(note, image_tag( "blank.png",:title => t('notes.delete_item_title'), :class=>"delete_item")) %>
|
||||
<%= link_to_edit_note(note, image_tag( "blank.png", :title => t('notes.edit_item_title'), :class=>"edit_item") ) %>
|
||||
|
||||
| <%= link_to("In: " + note.project.name, project_path(note.project), :class=>"footer_link" ) %> |
|
||||
|
||||
<%= Note.human_attribute_name('created_at') %>: <%= format_date(note.created_at) %>
|
||||
|
||||
<% if note.updated_at? -%>
|
||||
| <%= Note.human_attribute_name('updated_at') %>: <%= format_date(note.updated_at) %>
|
||||
<% end -%>
|
||||
</div>
|
||||
|
|
@ -1,21 +1,13 @@
|
|||
<%
|
||||
#form_remote_tag :url => note_path(note),
|
||||
#:method => :put,
|
||||
#:html => { :id => dom_id(note, 'edit_form'), :class => "inline-form" },
|
||||
#:update => dom_id(note, 'container'),
|
||||
#:complete => visual_effect(:appear, dom_id(note, 'container')) do
|
||||
-%>
|
||||
|
||||
<% form_for(note_edit_form, :html => {
|
||||
:id => dom_id(note_edit_form, 'edit_form'),
|
||||
:class => "inline-form edit-note-form",
|
||||
:method => :put }) do
|
||||
:method => :put }) do |f|
|
||||
-%>
|
||||
|
||||
<%= hidden_field( "note", "project_id" ) %>
|
||||
<%= text_area( "note", "body", "cols" => 70, "rows" => 15, "tabindex" => 1 ) %>
|
||||
<br /><br />
|
||||
<input type="submit" value="<%= t('common.update') %>" tabindex="2" />
|
||||
<div id="error_status"><%= error_messages_for("note") %></div>
|
||||
|
||||
<%= f.hidden_field( "project_id" ) %>
|
||||
<%= f.text_area( "body", "cols" => 70, "rows" => 15, "tabindex" => 1 ) %>
|
||||
|
||||
<div class="submit_box">
|
||||
<div class="widgets">
|
||||
|
|
@ -23,11 +15,13 @@
|
|||
<%=image_tag("accept.png", :alt => "") %>
|
||||
<%= t 'common.update' %>
|
||||
</button>
|
||||
<a href="" onclick="" class="negative">
|
||||
<a href="" class="negative" id="neg_<%=dom_id(note_edit_form, 'edit_form')%>">
|
||||
<%=image_tag("cancel.png", :alt => "") %>
|
||||
<%= t 'common.cancel' %>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% end -%>
|
||||
<br/><br/>
|
||||
|
||||
<% end -%>
|
||||
33
app/views/notes/update.js.erb
Normal file
33
app/views/notes/update.js.erb
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<% if @saved -%>
|
||||
|
||||
page_notify('notice', 'Note <%=@note.id %> saved', 5);
|
||||
replace_note_form_with_updated_note();
|
||||
|
||||
<% else -%>
|
||||
show_errors();
|
||||
<% end %>
|
||||
|
||||
function show_errors() {
|
||||
$('div#edit_error_status').html(html_for_error_messages());
|
||||
$('div#edit_error_status').show();
|
||||
}
|
||||
|
||||
function replace_note_form_with_updated_note() {
|
||||
$('#<%= dom_id(@note, 'edit')%>').fadeOut(250, function() {
|
||||
$('#<%= dom_id(@note, 'edit')%>').html(html_for_updated_note_form());
|
||||
$('div.project_notes#<%= dom_id(@note)%>').html(html_for_updated_note_details());
|
||||
$('#<%= dom_id(@note)%>').fadeIn(500);
|
||||
});
|
||||
}
|
||||
|
||||
function html_for_error_messages() {
|
||||
return "<%= escape_javascript(error_messages_for('note')) %>";
|
||||
}
|
||||
|
||||
function html_for_updated_note_form(){
|
||||
return "<%= escape_javascript(render(:partial => 'note_edit_form', :object => @note)) %>";
|
||||
}
|
||||
|
||||
function html_for_updated_note_details(){
|
||||
return "<%= escape_javascript(render(:partial => 'note_details', :object => @note)) %>";
|
||||
}
|
||||
|
|
@ -37,9 +37,9 @@ Feature: View, add, remove notes
|
|||
And I click the icon next to the note
|
||||
Then I should see the note text
|
||||
|
||||
@selenium @wip
|
||||
@selenium
|
||||
Scenario: Edit a note
|
||||
Given I have a project "Pass Final Exam" with 2 notes
|
||||
When I go to the notes page
|
||||
And I edit the note to "edited note"
|
||||
And I edit the first note to "edited note"
|
||||
Then I should see "edited note"
|
||||
|
|
@ -62,3 +62,27 @@ Feature: Edit a project
|
|||
Then the badge should show 2 # "manage me" and "test"
|
||||
When I try to edit the project name of "manage me" to "test"
|
||||
Then I should see "Name already exists"
|
||||
|
||||
@selenium @wip
|
||||
Scenario: I can go to the note of a project
|
||||
Given I have a project "test" with 2 note
|
||||
When I visit the "test" project
|
||||
Then I should see 2 notes
|
||||
When I click on the first note icon
|
||||
Then I should go to that note page
|
||||
|
||||
@selenium @wip
|
||||
Scenario: I can add a note to the project
|
||||
Given I have a project "test"
|
||||
When I visit the "test" project
|
||||
And I add a note "hello I'm testing"
|
||||
Then I should see one note
|
||||
|
||||
@selenium @wip
|
||||
Scenario: Long notes in a project are shown cut off
|
||||
Given I have a project "test"
|
||||
When I visit the "test" project
|
||||
And I add a note "test 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234 TOO LONG"
|
||||
Then I should not see "test 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234 TOO LONG"
|
||||
And I should see "test 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234"
|
||||
|
||||
|
|
|
|||
|
|
@ -36,8 +36,12 @@ When /^I click the icon next to the note$/ do
|
|||
click_link "Show note"
|
||||
end
|
||||
|
||||
When /^I edit the note to "([^"]*)"$/ do |note_content|
|
||||
pending # express the regexp above with the code you wish you had
|
||||
When /^I edit the first note to "([^"]*)"$/ do |note_body|
|
||||
title = selenium.get_text("css=div.container h2")
|
||||
id = title.split(' ').last
|
||||
click_link "link_edit_note_#{id}"
|
||||
fill_in "note[body]", :with => note_body
|
||||
click_button "submit_note_#{id}"
|
||||
end
|
||||
|
||||
Then /^(.*) notes should be visible$/ do |number|
|
||||
|
|
@ -68,4 +72,4 @@ end
|
|||
|
||||
Then /^I should see the note text$/ do
|
||||
Then "I should see \"after 50 characters\""
|
||||
end
|
||||
end
|
||||
|
|
@ -106,6 +106,7 @@ var IntegrationsPage = {
|
|||
|
||||
var NotesPage = {
|
||||
setup_behavior: function() {
|
||||
/* delete button for note */
|
||||
$('a.delete_note_button').live('click', function(evt){
|
||||
evt.preventDefault();
|
||||
if(confirm("Are you sure that you want to "+this.title+"?")){
|
||||
|
|
@ -113,7 +114,34 @@ var NotesPage = {
|
|||
params = {_method: 'delete'};
|
||||
$.post(this.href, params, null, 'script');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
/* edit button for note */
|
||||
$('a.note_edit_settings').live('click', function(evt){
|
||||
evt.preventDefault();
|
||||
dom_id = this.id.substr(10);
|
||||
$('#'+dom_id).toggle(); $('#edit_'+dom_id).show(); $('#edit_form_'+dom_id+' textarea').focus();
|
||||
});
|
||||
|
||||
/* cancel button when editing a note */
|
||||
$('.edit-note-form a.negative').live('click', function(){
|
||||
dom_id = this.id.substr(14);
|
||||
$('#'+dom_id).toggle(); $('#edit_'+dom_id).hide();
|
||||
return false;
|
||||
});
|
||||
|
||||
/* update button when editing a note */
|
||||
$("form.edit-note-form button.positive").live('click', function (ev) {
|
||||
$('form.edit-note-form').ajaxSubmit({
|
||||
type: 'POST',
|
||||
async: true,
|
||||
buttons_dom_elem: $(this),
|
||||
beforeSend: function() {
|
||||
this.buttons_dom_elem.block({message: null});},
|
||||
complete: function() {this.buttons_dom_elem.unblock();}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -523,11 +551,12 @@ $(document).ready(function() {
|
|||
});
|
||||
|
||||
/* for edit project form and edit todo form */
|
||||
$('.edit-form a.negative').live('click', function(){
|
||||
$('.edit-form a.negative').live('click', function(){
|
||||
$(this).parents('.edit-form').fadeOut(200, function () {
|
||||
$(this).parents('.list').find('.project').fadeIn(500);
|
||||
$(this).parents('.container').find('.item-show').fadeIn(500);
|
||||
})});
|
||||
})
|
||||
});
|
||||
|
||||
/* add behavior to clear the date both buttons for show_from and due */
|
||||
$(".date_clear").live('click', function() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue