From: Steinar H. Gunderson Date: Mon, 30 Nov 2015 20:52:52 +0000 (+0100) Subject: Add a very simple HTML5 uploader. X-Git-Url: https://git.sesse.net/?p=pr0n;a=commitdiff_plain;h=fb1421cd30d9e888d738012b826761cc418082da;ds=sidebyside Add a very simple HTML5 uploader. --- diff --git a/perl/Sesse/pr0n/Upload.pm b/perl/Sesse/pr0n/Upload.pm new file mode 100644 index 0000000..a9d1023 --- /dev/null +++ b/perl/Sesse/pr0n/Upload.pm @@ -0,0 +1,40 @@ +# Shows the upload dialog. + +package Sesse::pr0n::Upload; +use strict; +use warnings; + +use Sesse::pr0n::Common qw(error dberror); + +sub handler { + my $r = shift; + my $dbh = Sesse::pr0n::Common::get_dbh(); + + # Fix common error: pr0n.sesse.net/upload/event -> pr0n.sesse.net/upload/event/ + if ($r->path_info !~ /\/$/) { + my $res = Plack::Response->new(301); + $res->header('Location' => $r->path_info . "/"); + return $res; + } + $r->path_info =~ /^\/upload\/([a-zA-Z0-9-]+)\/?$/ + or return error($r, "Could not extract event"); + my $event = $1; + + my $res = Plack::Response->new(200); + $res->content_type("text/html; charset=utf-8"); + my $io = IO::String->new; + + chomp (my $title = Sesse::pr0n::Templates::fetch_template($r, 'upload-title')); + Sesse::pr0n::Common::header($r, $io, $title); + Sesse::pr0n::Templates::print_template($r, $io, 'upload', { + event => $event + }); + Sesse::pr0n::Common::footer($r, $io); + + $io->setpos(0); + $res->body($io); + return $res; +} + +1; + diff --git a/perl/Sesse/pr0n/pr0n.pm b/perl/Sesse/pr0n/pr0n.pm index f5715f5..ff4ae8e 100644 --- a/perl/Sesse/pr0n/pr0n.pm +++ b/perl/Sesse/pr0n/pr0n.pm @@ -6,6 +6,7 @@ use Sesse::pr0n::Rotate; use Sesse::pr0n::Select; use Sesse::pr0n::WebDAV; use Sesse::pr0n::NewEvent; +use Sesse::pr0n::Upload; use IO::File::WithPath; package Sesse::pr0n::pr0n; @@ -63,6 +64,8 @@ sub handler { return Sesse::pr0n::Select::handler($r); } elsif ($uri =~ m#^/newevent$#) { return Sesse::pr0n::NewEvent::handler($r); + } elsif ($uri =~ /^\/upload\/[a-zA-Z0-9-]+\/?$/) { + return Sesse::pr0n::Upload::handler($r); } elsif ($uri =~ /^\/[a-zA-Z0-9-]+\/?$/ || $uri =~ /^\/\+all\/?$/) { return Sesse::pr0n::Index::handler($r); diff --git a/templates/default/upload b/templates/default/upload new file mode 100644 index 0000000..5d4b375 --- /dev/null +++ b/templates/default/upload @@ -0,0 +1,77 @@ +

+

+ + +

+ + + + + + + +
FilenameSizeStatus
+ + diff --git a/templates/default/upload-title b/templates/default/upload-title new file mode 100644 index 0000000..2b0edc3 --- /dev/null +++ b/templates/default/upload-title @@ -0,0 +1 @@ +Upload files