summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOthmar Gsenger <otti@wirdorange.org>2011-01-14 22:19:17 +0000
committerOthmar Gsenger <otti@wirdorange.org>2011-01-14 22:19:17 +0000
commitca8cddbd2d5d89ed4c1bdf9498bb4eb68f2fac13 (patch)
tree3cd2bedb18f8d54f2200744d5c034b956d9fd48f
parentwathever (diff)
added ajax & navigation
-rwxr-xr-xenqueue.pl2
-rwxr-xr-xgroups.pl96
-rw-r--r--local/menu.pm55
-rwxr-xr-xmydl.pl6
-rwxr-xr-xsearch.pl15
5 files changed, 126 insertions, 48 deletions
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
-<script type="text/javascript" language="JavaScript"><!--
- window.setTimeout('document.location.reload()', 10000);
- //--></script>
-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
+ <script type="text/javascript" language="JavaScript"><!--
+ window.setInterval("get_download_speed( [], ['speed'] );", 2000);
+ window.setInterval("get_download_table( [], ['dltable'] );", 2000);
+ //--></script>
+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;