From 4cecda2089b57842b54f40deb2145e1a3e06ec3a Mon Sep 17 00:00:00 2001 From: Othmar Gsenger Date: Sat, 15 Jan 2011 05:21:19 +0000 Subject: added completed mark --- cancel.pl | 4 +++- enqueue.pl | 4 ++++ groups.pl | 9 ++++++--- local/db.pm | 11 ++++++++++- local/user.pm | 7 +++++++ mark_completed.pl | 8 ++++++++ mydl.pl | 5 +++-- pre_enqueue.pl | 12 +++++++----- remove.pl | 2 ++ search.pl | 6 +++--- 10 files changed, 53 insertions(+), 15 deletions(-) create mode 100755 mark_completed.pl diff --git a/cancel.pl b/cancel.pl index c3b7573..6e3bc78 100755 --- a/cancel.pl +++ b/cancel.pl @@ -23,7 +23,9 @@ foreach my $value ( @$row) { my $status = $cli->send_request('editqueue','GroupDelete',0,"",[$value->{LastID}->value]) or die "Can't connect to nzbget"; sleep 1; - remove_tree('/srv/nzbget/done/'.$dl->category->name.'/'.$dl->download_id + remove_tree('/srv/nzbget/done/'.$dl->category->name.'/'.$dl->download_id); + $user->obj->quota_used($user->obj->quota_used - $dl->size); + $user->obj->update; $dl->delete(); } } diff --git a/enqueue.pl b/enqueue.pl index 2fbea0d..7faa226 100755 --- a/enqueue.pl +++ b/enqueue.pl @@ -4,10 +4,14 @@ use CGI qw(:standard); use CGI::Carp 'fatalsToBrowser'; use local::db; use local::nzbget; +use utf8; use local::user; my $user = new local::user($ENV{REMOTE_USER}); my $nzbget = new local::nzbget; +die "Kein name angegeben" if not param('name'); + +die 'Kein freier Speicher' if $user->obj->quota_used>$user->obj->quoata; my $cat = local::db::category->retrieve(name=>param('cat')); die "Ungültige category" if not $cat; diff --git a/groups.pl b/groups.pl index 15291d2..cd7623c 100755 --- a/groups.pl +++ b/groups.pl @@ -6,6 +6,7 @@ use CGI::Carp 'fatalsToBrowser'; use local::nzbget; use local::db; use local::user; +use utf8; my $user = new local::user($ENV{REMOTE_USER}); use CGI::Ajax; @@ -29,6 +30,7 @@ sub get_download_table my $cli = new local::nzbget; my $row = $cli->send_request('listgroups') or die "Can't connect to nzbget"; $html.= CGI::start_table(); + $html.= Tr(th([qw/Kategorie Name Besitzer Größe(MB) Fortschritt Abbrechen/])); foreach my $value ( @$row) { my ($download) = local::db::download->retrieve($value->{NZBNicename}->value) or die ' Error in groups'; @@ -39,10 +41,12 @@ sub get_download_table { $download->size($total); $download->update(); + $user->obj->quota_used($user->obj->quota_used+$total); + $user->obj->update(); } my $cancel; $cancel=a({href=>'/cgi-bin/nzbget/cancel.pl?id='.$value->{NZBNicename}->value},'Abbrechen') if ($download->owner->owner_id() eq $user->get_id()); - $html.= Tr(td([$download->category->name,$download->name,$download->owner->name,$percent.'%',$cancel])); + $html.= Tr(td([$download->category->name,$download->name,$download->owner->name,$total,$percent.'%',$cancel])); #foreach my $key (keys %$value) #{ # $html.= Tr(td([$key,$value->{$key}->value])); @@ -64,8 +68,7 @@ sub Show_HTML //--> LALALA ; - $html.= table({class=>'nohigh'},Tr(td['download speed', div({id=>'speed'},get_download_speed())]),Tr(td([' ']))); - $html.= table(Tr(th([qw/Kategorie Name Besitzer Fortschritt Abbrechen/]))); + $html.= table({class=>'nohigh'},Tr(td['download speed   '. span({id=>'speed'},get_download_speed())]),Tr(td([' ']))); $html.= div({id=>'dls'},get_download_table()); $html.= $menu->end_html(); diff --git a/local/db.pm b/local/db.pm index 344b5a8..94c5941 100644 --- a/local/db.pm +++ b/local/db.pm @@ -5,9 +5,10 @@ local::db::dbi->connection('dbi:SQLite:/srv/nzbget/datenbank.sqlite', '', ''); package local::db::download; use base 'local::db::dbi'; local::db::download->table('download'); -local::db::download->columns(All => qw/download_id owner size time category name description/); +local::db::download->columns(All => qw/download_id owner size time category name description completed/); local::db::download->has_a(owner => 'local::db::owner'); local::db::download->has_a(category => 'local::db::category'); +local::db::download->has_many(seen => 'local::db::seen'); package local::db::category; use base 'local::db::dbi'; @@ -20,3 +21,11 @@ use base 'local::db::dbi'; local::db::owner->table('owner'); local::db::owner->columns(All => qw/owner_id name quoata quota_used/); local::db::owner->has_many(download => 'local::db::download'); +local::db::owner->has_many(seen => 'local::db::seen'); + +package local::db::seen; +use base 'local::db::dbi'; +local::db::seen->table('seen'); +local::db::seen->columns(All => qw/seen_id download user/); +local::db::seen->has_a(download => 'local::db::download'); +local::db::seen->has_a(user => 'local::db::owner'); diff --git a/local/user.pm b/local/user.pm index 8e134a8..5b727ba 100644 --- a/local/user.pm +++ b/local/user.pm @@ -21,6 +21,13 @@ sub new return $self; } +sub obj +{ + my $self = shift; + return local::db::owner->retrieve($self->{id}); +} + + sub get_name { my $self = shift; diff --git a/mark_completed.pl b/mark_completed.pl new file mode 100755 index 0000000..f456011 --- /dev/null +++ b/mark_completed.pl @@ -0,0 +1,8 @@ +#!/usr/bin/perl +use strict; +use local::db; +my $dl_id = $ARGV[0] or die "missing argument download id"; +my $dl = local::db::download->retrieve($dl_id) or die 'cannont find download'; +$dl->completed(1); +$dl->update; +exit 0; diff --git a/mydl.pl b/mydl.pl index d5ef969..f012743 100755 --- a/mydl.pl +++ b/mydl.pl @@ -13,15 +13,16 @@ print header; use local::menu; my $menu=new local::menu(%ENV); print $menu->start_html('my downloads'); +print table({class=>'nohigh'},Tr(td({align=>'right'},['benutzter Speicherplatz   '. $user->obj->quota_used().' / '.$user->obj->quoata().' MB']))) if (param('only_me')); print CGI::start_table(); print Tr(th([qw/Kategorie Name Größe Löschen /])); my @downloads; if (param('only_me')) { - @downloads = local::db::download->search(owner=>$user->get_id(),{ order_by => 'time DESC'}); + @downloads = local::db::download->search(owner=>$user->get_id(),completed=>1,{ order_by => 'time DESC'}); } else { - @downloads = reverse local::db::download->retrieve_all(); + @downloads = local::db::download->search(completed=>1,{ order_by => 'time DESC'}); } foreach my $dl ( @downloads) { diff --git a/pre_enqueue.pl b/pre_enqueue.pl index 7b3df63..fea581e 100755 --- a/pre_enqueue.pl +++ b/pre_enqueue.pl @@ -3,18 +3,20 @@ use strict; use CGI qw(:standard); use CGI::Carp 'fatalsToBrowser'; use local::db; +use local::menu; my @cat = local::db::category->retrieve_all(); die "Ungültige category" if not @cat; print header; -print start_html('nzbget pre_enqueue'); +my $menu = new local::menu(%ENV); +print $menu->start_html('nzbget pre_enqueue'); print CGI::start_form(-action=>'/cgi-bin/nzbget/enqueue.pl'); -print table( +print table({class=>'nohigh'}, Tr(td(param('title'))), Tr(td(param('description'))), ), -table( +table({class=>'nohigh'}, Tr(td(['name',textfield('name').hidden('description',param('description')).hidden('url',param('url')).hidden('title',param('title'))])), Tr(td(['category', CGI::popup_menu( @@ -22,7 +24,7 @@ table( -values=>[0,map {$_->name()} @cat], -labels => {0=>'---', map { ($_->category_id() => $_->name() ) } @cat} )])), - Tr(td([submit()])), + Tr(td([' ',submit("Download starten")])), ); print CGI::end_form; -print end_html(); +print $menu->end_html(); diff --git a/remove.pl b/remove.pl index 5c76462..3e62c08 100755 --- a/remove.pl +++ b/remove.pl @@ -13,6 +13,8 @@ my $del_id = param('id'); my ($dl) = local::db::download->retrieve($del_id) or die 'Error in cancel'; die "Not allowed" if not $dl->owner->owner_id() eq $user->get_id(); remove_tree('/srv/nzbget/done/'.$dl->category->name.'/'.$dl->download_id); +$user->obj->quota_used($user->obj->quota_used - $dl->size); +$user->obj->update; $dl->delete(); print CGI::redirect('/cgi-bin/nzbget/mydl.pl?only_me=1'); diff --git a/search.pl b/search.pl index aefec96..aad6747 100755 --- a/search.pl +++ b/search.pl @@ -16,9 +16,9 @@ print CGI::start_table(); print CGI::start_form(-action=>'/cgi-bin/nzbget/search.pl'); print table({class=>'nohigh'}, - Tr(td(['Search',textfield('q'),])), - Tr(td(['min Size',textfield('minsize')])), - Tr(td(['max Size',textfield('maxsize').hidden('more',1)])), + Tr(td(['Search',textfield({size=>100,name=>'q'}),])), + Tr(td(['min Size',textfield({size=>5,name=>'minsize'}).' MB'])), + Tr(td(['max Size',textfield({size=>5, name=>'maxsize'}).' MB'.hidden('more',1)])), Tr(td(['results',CGI::popup_menu( -name => 'max', -values => ['25','100','500'], -- cgit v1.2.3