return correct status codes and content
authorDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 27 May 2010 14:07:53 +0000 (16:07 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 27 May 2010 14:07:53 +0000 (16:07 +0200)
lib/MojoFacets/Data.pm
public/edit_table.js

index 6b34a7d..316e37e 100644 (file)
@@ -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";
        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;
 
        if ( defined $loaded->{$path}->{data}->{items}->[$i]->{$name} ) {
                $content =~ s/^\s+//s;
                $content =~ s/\s+$//s;
+               my $v;
                if ( $content =~ /\xB6/ ) {     # para
                if ( $content =~ /\xB6/ ) {     # para
-                       $content = [ split(/\s*\xB6\s*/, $content) ];
+                       $v = [ split(/\s*\xB6\s*/, $content) ];
                } else {
                } else {
-                       $content = [ $content ];
+                       $v = [ $content ];
                }
 
                my $old = dump $loaded->{$path}->{data}->{items}->[$i]->{$name};
                }
 
                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";
                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};
 
                        if ( defined $loaded->{$path}->{sorted}->{$name} ) {
                            delete $loaded->{$path}->{sorted}->{$name};
@@ -693,16 +695,21 @@ sub edit {
                                warn "# invalidate $path filtered $_\n";
                        }
 
                                warn "# invalidate $path filtered $_\n";
                        }
 
+                       $status = 201; # created
+
                } else {
                        warn "# unchanged $path $i $old\n";
                } else {
                        warn "# unchanged $path $i $old\n";
+                       $status = 304;
                }
        } else {
                $content = "$path $i $name doesn't exist\n";
                }
        } else {
                $content = "$path $i $name doesn't exist\n";
+               $status = 404;
                warn "# $content\n";
        }
 
        $self->render(
                warn "# $content\n";
        }
 
        $self->render(
-               content => $content
+               status => $status,
+               content => $content,
        );
 }
 
        );
 }
 
index 89c202a..326891f 100644 (file)
@@ -27,9 +27,10 @@ var cell_blur = function() {
        $.post( '/data/edit', {
                path: document.title, _row_id: _row_id,
                name: name, content: content
        $.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('<span class=d>¶</span>');
                update.replaceWith( data );
        });
                data = vals.join('<span class=d>¶</span>');
                update.replaceWith( data );
        });