From ca8cddbd2d5d89ed4c1bdf9498bb4eb68f2fac13 Mon Sep 17 00:00:00 2001 From: Othmar Gsenger Date: Fri, 14 Jan 2011 22:19:17 +0000 Subject: added ajax & navigation --- enqueue.pl | 2 +- groups.pl | 96 +++++++++++++++++++++++++++++++++++++---------------------- local/menu.pm | 55 ++++++++++++++++++++++++++++++++++ mydl.pl | 6 ++-- search.pl | 15 ++++------ 5 files changed, 126 insertions(+), 48 deletions(-) create mode 100644 local/menu.pm diff --git a/enqueue.pl b/enqueue.pl index 7861073..2fbea0d 100755 --- a/enqueue.pl +++ b/enqueue.pl @@ -26,7 +26,7 @@ my $resp = $nzbget->send_request('append',RPC::XML::string->new($download->downl if ($resp->value) { - print CGI::redirect('/'); + print CGI::redirect('/cgi-bin/nzbget/groups.pl'); } else { print header; print start_html('nzbget enqueue error'); diff --git a/groups.pl b/groups.pl index f810659..cf5a029 100755 --- a/groups.pl +++ b/groups.pl @@ -1,45 +1,71 @@ #!/usr/bin/perl + use strict; use CGI qw(:standard); use CGI::Carp 'fatalsToBrowser'; use local::nzbget; use local::db; -print header; -print start_html('nzbget groups'); - -my $cli = new local::nzbget; -print < -LALALA -; -print hr(); -print CGI::start_table(); -my $status = $cli->send_request('status') or die "Can't connect to nubget"; -#print Tr(td['download speed', 'cur', int($status->{DownloadRate}->value/(1024*1024)).'MB/s','average',int($status->{AverageDownloadRate}->value/(1024*1024)).'MB/s']); -print Tr(td['download speed', int($status->{DownloadRate}->value/(1024*1024)).'MB/s']); -print CGI::end_table(); -print hr(); - -my $row = $cli->send_request('listgroups') or die "Can't connect to nubget"; -print CGI::start_table(); -foreach my $value ( @$row) + +use CGI::Ajax; + +my $cgi = new CGI; +my $pjx = new CGI::Ajax( 'get_download_speed' => \&get_download_speed, + 'get_download_table' => \&get_download_table + ); +print $pjx->build_html( $cgi, \&Show_HTML); + +sub get_download_speed { - my ($download) = local::db::download->retrieve($value->{NZBNicename}->value) or die ' Error in groups'; - my $remaining=$value->{RemainingSizeMB}->value; - my $total=$value->{FileSizeMB}->value; - my $percent = int(100-100*$remaining/$total); - $download->size($total); - $download->update(); - print Tr(td([$download->category->name,$download->name,$download->owner->name,$percent.'%'])); - #foreach my $key (keys %$value) - #{ - # print Tr(td([$key,$value->{$key}->value])); - #} + my $cli = new local::nzbget; + my $status = $cli->send_request('status') or die "Can't connect to nubget"; + return int($status->{DownloadRate}->value/(1024*1024)).'MB/s'; } -; -print CGI::end_table(); -print end_html; +sub get_download_table +{ + my $html; + my $cli = new local::nzbget; + my $row = $cli->send_request('listgroups') or die "Can't connect to nubget"; + foreach my $value ( @$row) + { + my ($download) = local::db::download->retrieve($value->{NZBNicename}->value) or die ' Error in groups'; + my $remaining=$value->{RemainingSizeMB}->value; + my $total=$value->{FileSizeMB}->value; + my $percent = int(100-100*$remaining/$total); + $download->size($total); + $download->update(); + $html.= Tr(td([$download->category->name,$download->name,$download->owner->name,$percent.'%'])); + #foreach my $key (keys %$value) + #{ + # $html.= Tr(td([$key,$value->{$key}->value])); + #} + } + return $html; +} +sub Show_HTML +{ + use local::menu; + my $menu= new local::menu(%ENV); + my $html= $menu->start_html('nzbget status'); + + $html.= < +LALALA + ; + $html.= hr(); + $html.= CGI::start_table(); + $html.= Tr(td['download speed', div({id=>'speed'},get_download_speed())]); + $html.= CGI::end_table(); + $html.= hr(); + + $html.= CGI::start_table(id=>'dltable'); + $html.= get_download_table(); + $html.= CGI::end_table(); + + $html.= $menu->end_html(); + return $html +} diff --git a/local/menu.pm b/local/menu.pm new file mode 100644 index 0000000..6019acb --- /dev/null +++ b/local/menu.pm @@ -0,0 +1,55 @@ +package local::menu; +require Exporter; +use CGI qw(:standard); +use strict; +use base "Exporter"; + +my %menus = +( + '/cgi-bin/nzbget/groups.pl'=>'Aktive Downloads', + '/cgi-bin/nzbget/mydl.pl?only_me=1'=>'My Downloads', + '/cgi-bin/nzbget/mydl.pl'=>'All Downloads', + '/cgi-bin/nzbget/log.pl'=>'Log', + '/cgi-bin/nzbget/search.pl'=>'Suche', + +); + +sub new +{ + my $invocant = shift; + my $class = ref($invocant) || $invocant; + # my $self = $class->SUPER::new(@_); + my $self=bless {@_}, $class; + return $self; +} + +sub start_html +{ + my $self=shift; + + my $active = $self->{SCRIPT_NAME}; + my $html= CGI::start_html(-style=>{'src'=>'/style.css'},@_); + my @elements; + foreach my $url (keys %menus) + { + if ($url eq $active) + { + push @elements,td([$menus{$url}]); + } else { + push @elements,th([a({href=>$url},$menus{$url})]); + } + } + $html.= table( + Tr(join '',@elements + ), + ); + + return $html; +} + +sub end_html +{ + my $self=shift; + my $html= CGI::end_html; + return $html; +} diff --git a/mydl.pl b/mydl.pl index 5c46937..74dd98f 100755 --- a/mydl.pl +++ b/mydl.pl @@ -9,7 +9,9 @@ my $user = new local::user($ENV{REMOTE_USER}); print header; -print start_html('my downloads'); +use local::menu; +my $menu=new local::menu; +print $menu->start_html('my downloads'); print CGI::start_table(); my @downloads; @@ -29,5 +31,5 @@ foreach my $dl ( @downloads) ; print CGI::end_table(); -print end_html; +print $menu->end_html(); diff --git a/search.pl b/search.pl index ad557ae..24831f7 100755 --- a/search.pl +++ b/search.pl @@ -5,21 +5,16 @@ use CGI::Carp 'fatalsToBrowser'; use URI::Escape; use local::params; use local::nzbindex; +use local::menu; print header; -print start_html('nzbget status'); +my $menu= new local::menu(%ENV); +print $menu->start_html('nzbget status'); print CGI::start_table(); print CGI::start_form(-action=>'/cgi-bin/nzbget/search.pl'); -print table( - Tr(th([ - a({href=>'/cgi-bin/nzbget/mydl.pl?only_me=1'},'My Downloads'), - a({href=>'/cgi-bin/nzbget/mydl.pl'},'All Downloads'), - a({href=>'/cgi-bin/nzbget/log.pl'},'Log'), - - ])), -), +print table( Tr(td(['Search',textfield('q'),])), Tr(td(['min Size',textfield('minsize')])), @@ -51,5 +46,5 @@ if ($param_obj->has_params()) print hr().'nothing found'; } } -print end_html; +print $menu->end_html; -- cgit v1.2.3