X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FApp%2FIdiotBox.pm;h=48953024ef958ebd65331baa098347cdcc125b07;hb=2da7f57fdf9bb6f57c950614bea6e85dd812f667;hp=119f5178355f8958a24489928d27412c3b067422;hpb=f29e9b6f6ae3cd365017102ed4ec49160fe8f46a;p=catagits%2FApp-IdiotBox.git diff --git a/lib/App/IdiotBox.pm b/lib/App/IdiotBox.pm index 119f517..4895302 100644 --- a/lib/App/IdiotBox.pm +++ b/lib/App/IdiotBox.pm @@ -36,6 +36,7 @@ sub dispatch_request { my $self = shift; sub (/) { $self->show_front_page }, + # Admin sub (/admin/) { sub (%new_name=&new_slug=) { my ($self, $name, $slug) = @_; @@ -45,25 +46,46 @@ sub dispatch_request { name => $name, ); - return $self->show_admin_page(error => $err) if $err; + return $self->show_admin_page(message => $err) if $err; my $nb = $self->buckets->add($nb); - $self->show_admin_page; + $self->show_admin_page(message => "New bucket created"); }, }, sub (/admin/) { $self->show_admin_page }, - sub (/admin/*/...) { + sub (/admin/bucket/*/...) { my $bucket = $self->buckets->get({ slug => $_[1] }); - sub (%new_name=) { - my ($self, $new_name) = @_; + # Admin, video + sub (/video/*/...) { + my $video = $bucket->videos->get({ slug => $_[1] }); + + sub (POST + %edit_video=&*) { + my ($self, undef, $args) = @_; + delete $args->{edit_video}; + + my ($uv, $err) = $video->update(%$args); + + return $self->show_edit_video_page($video, message => $err) if $err; + + $self->videos->replace($video, $uv); + + $self->show_edit_video_page($video, message => "Video updated"); + }, + + sub (/) { $self->show_edit_video_page($video); } + }, + + sub (POST + %edit_bucket=&*) { + my ($self, $new_name) = @_; + die "WTF"; my ($ub, $err) = $bucket->update( name => $new_name, ); - return $self->show_admin_page(error => $err) if $err; + return $self->show_admin_page(message => $err) if $err; $self->buckets->replace($bucket, $ub); @@ -80,6 +102,8 @@ sub dispatch_request { $self->show_bucket_deleted_page($bucket->slug); }, }, + + # Normal site sub (/*/...) { my $bucket = $self->buckets->get({ slug => $_[1] }); sub (/) { @@ -118,7 +142,7 @@ sub show_front_page { sub show_admin_page { my $self = shift; my %opts = @_; - my $error = $opts{error} || ''; + my $message = $opts{message} || ''; my $bucket = $self->buckets; $self->html_response( @@ -130,14 +154,14 @@ sub show_admin_page { $_->select('.bucket-slug')->replace_content($obj->slug) ->select('.bucket-name')->replace_content($obj->name) ->select('.edit-link')->set_attribute( - 'href' => $obj->slug.'/' + 'href' => 'bucket/'.$obj->slug.'/' ) ->select('.delete-link')->set_attribute( - 'href' => $obj->slug.'/delete/' + 'href' => 'bucket/'.$obj->slug.'/delete/' ) } })) - ->select('.error-text')->replace_content($error) + ->select('.message-text')->replace_content($message) } @@ -146,7 +170,7 @@ sub show_admin_page { sub show_confirm_delete_bucket_page { my ($self, $bucket) = @_; - $self->html_response('delete' => sub { + $self->html_response('delete_bucket' => sub { $_->select('.bucket-name')->replace_content($bucket->name) ->select('.confirm-yes')->set_attribute( 'href' => 'yes/' @@ -156,23 +180,47 @@ sub show_confirm_delete_bucket_page { sub show_edit_bucket_page { my ($self, $bucket, %opt) = @_; - my $error = $opt{error} || ''; - $self->html_response('edit' => sub { + my $message = $opt{message} || ''; + $self->html_response('edit_bucket' => sub { $_->select('.bucket-name')->replace_content($bucket->name) - ->select('.error-text')->replace_content($error); + ->select('.bucket-slug')->replace_content($bucket->slug) + ->select('.message-text')->replace_content($message) + ->select('#video-list')->repeat_content($bucket->videos->map(sub { + my $video = $_; + sub { + $_->select('.video-name')->replace_content($video->name) + ->select('.video-author')->replace_content($video->author) + ->select('.video-link')->set_attribute( + href => 'video/'.$video->slug.'/' + ) + } + })) + + }); +} + +sub show_edit_video_page { + my ($self, $video, %opt) = @_; + my $message = $opt{message} || ''; + $self->html_response('edit_video' => sub { + $_->select('.video-name')->set_attribute(value => $video->name) + ->select('.author-name')->set_attribute(value => $video->author) + ->select('.bucket-slug')->replace_content($video->bucket->slug) + ->select('.slug-name')->replace_content($video->slug) + ->select('.message-text')->replace_content($message) }); } sub show_bucket_deleted_page { my ($self, $name) = @_; - $self->html_response('deleted' => sub { + $self->html_response('deleted_bucket' => sub { $_->select('.bucket-name')->replace_content($name) }); } sub show_bucket_edited_page { my ($self, $name) = @_; - $self->html_response('edited' => sub { + $self->html_response('edited_bucket' => sub { $_->select('.bucket-name')->replace_content($name) }); }