From: Dobrica Pavlinusic Date: Thu, 27 May 2010 14:07:53 +0000 (+0200) Subject: return correct status codes and content X-Git-Url: http://git.rot13.org/?p=MojoFacets.git;a=commitdiff_plain;h=f4df2630f8a4c2c7cdc6b6adb2eebc76e389029e return correct status codes and content --- diff --git a/lib/MojoFacets/Data.pm b/lib/MojoFacets/Data.pm index 6b34a7d..316e37e 100644 --- a/lib/MojoFacets/Data.pm +++ b/lib/MojoFacets/Data.pm @@ -667,21 +667,23 @@ sub edit { die "invalid _row_id ",dump($i) unless $i =~ m/^\d+$/; my $path = $self->param('path') || die "no path"; my $name = $self->param('name') || die "no name"; + my $status = 200; # 200 = OK, 201 = Created if ( defined $loaded->{$path}->{data}->{items}->[$i]->{$name} ) { $content =~ s/^\s+//s; $content =~ s/\s+$//s; + my $v; if ( $content =~ /\xB6/ ) { # para - $content = [ split(/\s*\xB6\s*/, $content) ]; + $v = [ split(/\s*\xB6\s*/, $content) ]; } else { - $content = [ $content ]; + $v = [ $content ]; } my $old = dump $loaded->{$path}->{data}->{items}->[$i]->{$name}; - my $new = dump $content; + my $new = dump $v; if ( $old ne $new ) { warn "# update $path $i $old -> $new\n"; - $loaded->{$path}->{data}->{items}->[$i]->{$name} = $content; + $loaded->{$path}->{data}->{items}->[$i]->{$name} = $v; if ( defined $loaded->{$path}->{sorted}->{$name} ) { delete $loaded->{$path}->{sorted}->{$name}; @@ -693,16 +695,21 @@ sub edit { warn "# invalidate $path filtered $_\n"; } + $status = 201; # created + } else { warn "# unchanged $path $i $old\n"; + $status = 304; } } else { $content = "$path $i $name doesn't exist\n"; + $status = 404; warn "# $content\n"; } $self->render( - content => $content + status => $status, + content => $content, ); } diff --git a/public/edit_table.js b/public/edit_table.js index 89c202a..326891f 100644 --- a/public/edit_table.js +++ b/public/edit_table.js @@ -27,9 +27,10 @@ var cell_blur = function() { $.post( '/data/edit', { path: document.title, _row_id: _row_id, name: name, content: content - } , function(data) { - console.debug( 'server data', data ); - var vals = content.split('¶'); + } , function(data, textStatus) { + if ( data.length == 0 ) data = content; // 304 doesn't return content + console.debug( 'data:', data, 'status:', textStatus ); + var vals = data.split('¶'); data = vals.join('¶'); update.replaceWith( data ); });