]> ruin.nu Git - ndwebbie.git/commitdiff
Converted main page
authorMichael Andreen <harv@ruin.nu>
Wed, 16 Jul 2008 01:57:47 +0000 (03:57 +0200)
committerMichael Andreen <harv@ruin.nu>
Wed, 16 Jul 2008 01:57:47 +0000 (03:57 +0200)
NDWeb/Pages/Main.pm [deleted file]
lib/NDWeb/Controller/Members.pm
root/lib/site/leftbar.tt2
root/src/index.tt2
root/src/members/index.tt2 [new file with mode: 0644]
root/static/default.css
templates/main.tmpl [deleted file]

diff --git a/NDWeb/Pages/Main.pm b/NDWeb/Pages/Main.pm
deleted file mode 100644 (file)
index 083b96d..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-#**************************************************************************
-#   Copyright (C) 2006 by Michael Andreen <harvATruinDOTnu>               *
-#                                                                         *
-#   This program is free software; you can redistribute it and/or modify  *
-#   it under the terms of the GNU General Public License as published by  *
-#   the Free Software Foundation; either version 2 of the License, or     *
-#   (at your option) any later version.                                   *
-#                                                                         *
-#   This program is distributed in the hope that it will be useful,       *
-#   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
-#   GNU General Public License for more details.                          *
-#                                                                         *
-#   You should have received a copy of the GNU General Public License     *
-#   along with this program; if not, write to the                         *
-#   Free Software Foundation, Inc.,                                       *
-#   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
-#**************************************************************************/
-
-package NDWeb::Pages::Main;
-use strict;
-use warnings;
-use CGI qw/:standard/;
-use ND::Include;
-use NDWeb::Include;
-
-use base qw/NDWeb::XMLPage/;
-
-$NDWeb::Page::PAGES{main} = 'NDWeb::Pages::Main';
-
-sub render_body {
-       my $self = shift;
-       my ($BODY) = @_;
-       $self->{TITLE} = 'Main Page';
-       my $DBH = $self->{DBH};
-
-       if (defined param('cmd')){
-               if (param('cmd') eq 'fleet'){
-                       my $fleet = param('fleet');
-                       $fleet =~ s/,//g;
-                       my $amount = 0;
-                       my @ships;
-                       while ($fleet =~ m/((?:[A-Z][a-z]+ )*[A-Z][a-z]+)\s+(\d+)/g){
-                               $amount += $2;
-                               push @ships, [$1,$2];
-                       }
-                       if ($amount){
-                               $DBH->begin_work;
-                               eval{
-                                       my $insert = $DBH->prepare(q{INSERT INTO fleets 
-                                               (uid,sender,name,mission,tick,amount)
-                                               VALUES (?,?,'Main','Full fleet',tick(),?) RETURNING id});
-                                       my ($id) = $DBH->selectrow_array($insert,undef,$self->{UID}
-                                               ,$self->{PLANET},$amount) or die $DBH->errstr;
-                                       $insert = $DBH->prepare('INSERT INTO fleet_ships 
-                                               (id,ship,amount) VALUES (?,?,?)');
-                                       for my $s (@ships){
-                                               unshift @{$s},$id;
-                                               $insert->execute(@{$s}) or die $DBH->errstr;
-                                       }
-                               };
-                               if ($@){
-                                       warn $@;
-                                       $DBH->rollback;
-                               }else{
-                                       $DBH->commit;
-                                       $self->{RETURN} = 'REDIRECT';
-                                       $self->{REDIR_LOCATION} = "/main";
-                                       return;
-                               }
-                       }else{
-                               warn 'Fleet does not contain any ships';
-                       }
-               }elsif (param('cmd') eq 'Recall Fleets'){
-                       $DBH->begin_work;
-                       my $updatefleets = $DBH->prepare('UPDATE fleets SET back = tick() + (tick() - (tick - eta))  WHERE uid = ? AND id = ?');
-
-                       for my $param (param()){
-                               if ($param =~ /^change:(\d+)$/){
-                                       if($updatefleets->execute($ND::UID,$1)){
-                                               log_message $ND::UID,"Member recalled fleet $1";
-                                       }else{
-                                               warn $DBH->errstr;
-                                       }
-                               }
-                       }
-                       $DBH->commit or warn $DBH->errstr;
-               }elsif (param('cmd') eq 'Change Fleets'){
-                       $DBH->begin_work;
-                       my $updatefleets = $DBH->prepare('UPDATE fleets SET back = ? WHERE uid = ? AND id = ?');
-                       for my $param (param()){
-                               if ($param =~ /^change:(\d+)$/){
-                                       if($updatefleets->execute(param("back:$1"),$ND::UID,$1)){
-                                               log_message $ND::UID,"Member set fleet $1 to be back tick: ".param("back:$1");
-                                       }else{
-                                               warn $DBH->errstr;
-                                       }
-                               }
-                       }
-                       $DBH->commit or warn $DBH->errstr;
-               }
-       }
-       if (param('sms')){
-               my $query = $DBH->prepare('UPDATE users SET sms = ? WHERE uid = ?');
-               $query->execute(escapeHTML(param('sms')),$ND::UID);
-       }
-       if (param('hostname')){
-               my $query = $DBH->prepare('UPDATE users SET hostmask = ? WHERE uid = ?');
-               $query->execute(escapeHTML(param('hostname')),$ND::UID);
-       }
-       if ($self->isMember() && !$self->{PLANET} && defined param('planet') && (param('planet') =~ m/(\d+)(?: |:)(\d+)(?: |:)(\d+)/)){
-               my $query = $DBH->prepare(q{
-                       UPDATE users SET planet = 
-                       (SELECT id from current_planet_stats where x = ? AND y = ? AND z = ?)
-                       WHERE uid = ? });
-               $query->execute($1,$2,$3,$ND::UID);
-       }
-
-       $BODY->param(isMember => $self->isMember());
-       my @groups = map {name => $_}, sort keys %{$self->{GROUPS}};
-       $BODY->param(Groups => \@groups);
-
-
-       my $query = $DBH->prepare(q{SELECT planet,defense_points,attack_points,scan_points,humor_points, (attack_points+defense_points+scan_points/20) as total_points, sms,rank,hostmask FROM users WHERE uid = ?});
-
-       my ($planet,$defense_points,$attack_points,$scan_points,$humor_points,$total_points,$sms,$rank,$hostname) = $DBH->selectrow_array($query,undef,$ND::UID);
-
-       $self->{PLANET} = $planet unless $self->{PLANET};
-
-       $BODY->param(NDRank => $rank);
-       $BODY->param(DefensePoints => $defense_points);
-       $BODY->param(AttackPoints => $attack_points);
-       $BODY->param(ScanPoints => $scan_points);
-       $BODY->param(HumorPoints => $humor_points);
-       $BODY->param(TotalPoints => $total_points);
-
-       $BODY->param(Planet => $planet);
-
-       my $calls = $DBH->prepare(qq{
-               SELECT id,landing_tick,dc,curreta,covered,
-                               TRIM('/' FROM concat(DISTINCT race||' /')) AS race, TRIM('/' FROM concat(amount||' /')) AS amount,
-                               TRIM('/' FROM concat(DISTINCT eta||' /')) AS eta, TRIM('/' FROM concat(DISTINCT shiptype||' /')) AS shiptype,
-                               TRIM('/' FROM concat(coords||' /')) AS attackers 
-                       FROM (SELECT c.id,p.x,p.y,p.z, u.defense_points, c.landing_tick, dc.username AS dc,covered,
-                               (c.landing_tick - tick()) AS curreta,p2.race, i.amount, i.eta, i.shiptype, p2.alliance,
-                               coords(p2.x,p2.y,p2.z), COUNT(DISTINCT f.id) AS fleets
-                       FROM calls c 
-                       JOIN incomings i ON i.call = c.id
-                       JOIN users u ON c.member = u.uid
-                       JOIN current_planet_stats p ON u.planet = p.id
-                       JOIN current_planet_stats p2 ON i.sender = p2.id
-                       LEFT OUTER JOIN users dc ON c.dc = dc.uid
-                       LEFT OUTER JOIN fleets f ON f.target = u.planet AND f.tick = c.landing_tick AND f.back = f.tick + f.eta - 1
-                       WHERE u.uid = ? AND c.landing_tick >= tick()
-                       GROUP BY c.id, p.x,p.y,p.z, c.landing_tick, u.defense_points,dc.username,covered,p2.race,i.amount,i.eta,i.shiptype,p2.alliance,p2.x,p2.y,p2.z) a
-                       GROUP BY id, x,y,z,landing_tick, defense_points,dc,covered,curreta,fleets
-                       ORDER BY landing_tick DESC
-               })or warn  $DBH->errstr;
-       $calls->execute($ND::UID) or warn $DBH->errstr;
-
-       my @calls;
-       while (my $call = $calls->fetchrow_hashref){
-               $call->{attackers} =~ s{(\d+:\d+:\d+)}{<a href="/check?coords=$1">$1</a>}g;
-               unless(defined $call->{dc}){
-                       $call->{activedc} = 'Hostile';
-                       $call->{dc} = 'none';
-               }
-               if($call->{covered}){
-                       $call->{covered} = 'Friendly';
-               }else{
-                       $call->{covered} = 'Hostile';
-               }
-               $call->{shiptype} = $call->{shiptype};
-               push @calls, $call;
-       }
-       $BODY->param(Calls => \@calls);
-
-       my $planetstats= $DBH->selectrow_hashref(q{SELECT x,y,z, ((ruler || ' OF ') || p.planet) as planet,race,
-               size, size_gain, size_gain_day,
-               score,score_gain,score_gain_day,
-               value,value_gain,value_gain_day,
-               xp,xp_gain,xp_gain_day,
-               sizerank,sizerank_gain,sizerank_gain_day,
-               scorerank,scorerank_gain,scorerank_gain_day,
-               valuerank,valuerank_gain,valuerank_gain_day,
-               xprank,xprank_gain,xprank_gain_day
-               from current_planet_stats_full p
-                       WHERE id = ?},undef,$planet) if $planet;
-       if ($planetstats){
-               my $planet = $planetstats;
-               for my $type (qw/size score value xp/){
-                       $planet->{$type} =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1,/g; #Add comma for ever 3 digits, i.e. 1000 => 1,000
-                       $planet->{"${type}img"} = 'stay';
-                       $planet->{"${type}img"} = 'up' if $planet->{"${type}_gain_day"} > 0;
-                       $planet->{"${type}img"} = 'down' if $planet->{"${type}_gain_day"} < 0;
-                       $planet->{"${type}rankimg"} = 'stay';
-                       $planet->{"${type}rankimg"} = 'up' if $planet->{"${type}rank_gain_day"} < 0;
-                       $planet->{"${type}rankimg"} = 'down' if $planet->{"${type}rank_gain_day"} > 0;
-                       for my $type ($type,"${type}_gain","${type}_gain_day"){
-                               $planet->{$type} =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1,/g; #Add comma for ever 3 digits, i.e. 1000 => 1,000
-                       }
-               }
-               $BODY->param(Planets => [$planet]);
-               $BODY->param(PlanetCoords => "$planet->{x}:$planet->{y}:$planet->{z}");
-       }
-
-
-       $query = $DBH->prepare(q{SELECT f.id, coords(x,y,z) AS target, mission
-               , f.amount, tick, back
-FROM fleets f 
-LEFT OUTER JOIN current_planet_stats p ON f.target = p.id
-WHERE NOT ingal AND f.uid = ? AND f.sender = ? AND 
-       (back >= ? OR (tick >= tick() -  24 AND name = 'Main'))
-GROUP BY f.id, x,y,z, mission, tick,back,f.amount
-ORDER BY x,y,z,mission,tick
-               });
-
-       my $ships = $DBH->prepare(q{SELECT ship,amount FROM fleet_ships
-               WHERe id = ? ORDER BY num
-       });
-
-       $query->execute($self->{UID},$self->{PLANET},$self->{TICK}) or warn $DBH->errstr;
-       my @fleets;
-       while (my $fleet = $query->fetchrow_hashref){
-               my @ships;
-               $ships->execute($fleet->{id});
-               while (my $ship = $ships->fetchrow_hashref){
-                       push @ships,$ship;
-               }
-               $fleet->{ships} = \@ships;
-               push @fleets,$fleet;
-       }
-       $BODY->param(Fleets => \@fleets);
-
-       $BODY->param(SMS => $sms);
-       $BODY->param(Hostname => $hostname);
-
-       if ($self->isMember()){
-               my $announcements = $DBH->prepare(q{SELECT ft.ftid AS id,u.username,ft.subject,
-                       count(NULLIF(COALESCE(fp.time > ftv.time,TRUE),FALSE)) AS unread,count(fp.fpid) AS posts,
-                       date_trunc('seconds',max(fp.time)::timestamp) as last_post,
-                       min(fp.time)::date as posting_date, ft.sticky
-                       FROM forum_threads ft JOIN forum_posts fp USING (ftid) 
-                               JOIN users u ON u.uid = ft.uid
-                               LEFT OUTER JOIN (SELECT * FROM forum_thread_visits WHERE uid = $1) ftv ON ftv.ftid = ft.ftid
-                       WHERE ft.fbid = 1
-                       GROUP BY ft.ftid, ft.subject,ft.sticky,u.username
-                       HAVING count(NULLIF(COALESCE(ft.sticky OR fp.time > ftv.time,TRUE),FALSE)) >= $2
-                       ORDER BY sticky DESC,last_post DESC
-               });
-               $announcements->execute($ND::UID,1) or warn $DBH->errstr;
-               my @threads;
-               while (my $thread = $announcements->fetchrow_hashref){
-                       push @threads,$thread;
-               }
-               $BODY->param(Announcements => \@threads);
-       }
-
-
-       return $BODY;
-}
-
-
-1;
-
index 78bbe80d58c67b796d5bbd2739eda9a62d4527cf..9373b8f58b77b230212cf16d3c9e62704518545d 100644 (file)
@@ -4,6 +4,8 @@ use strict;
 use warnings;
 use parent 'Catalyst::Controller';
 
+use NDWeb::Include;
+
 =head1 NAME
 
 NDWeb::Controller::Members - Catalyst Controller
@@ -21,6 +23,209 @@ Catalyst Controller.
 
 =cut
 
+sub index : Path : Args(0) {
+       my ( $self, $c, $order ) = @_;
+       my $dbh = $c->model;
+
+       $c->stash(error => $c->flash->{error});
+
+       $c->stash(comma => \&comma_value);
+       $c->stash(u => $dbh->selectrow_hashref(q{SELECT planet,defense_points
+                       ,attack_points,scan_points,humor_points
+                       , (attack_points+defense_points+scan_points/20) as total_points
+                       , sms,rank,hostmask FROM users WHERE uid = ?
+                       },undef,$c->user->id)
+       );
+
+       $c->stash(groups => $dbh->selectrow_array(q{SELECT array_accum(groupname)
+               FROM groups g NATURAL JOIN groupmembers gm
+               WHERE uid = $1
+                       },undef,$c->user->id)
+       );
+
+       $c->stash(p => $dbh->selectrow_hashref(q{SELECT id,x,y,z, ruler, planet,race,
+               size, size_gain, size_gain_day,
+               score,score_gain,score_gain_day,
+               value,value_gain,value_gain_day,
+               xp,xp_gain,xp_gain_day,
+               sizerank,sizerank_gain,sizerank_gain_day,
+               scorerank,scorerank_gain,scorerank_gain_day,
+               valuerank,valuerank_gain,valuerank_gain_day,
+               xprank,xprank_gain,xprank_gain_day
+               from current_planet_stats_full p
+                       WHERE id = ?
+                       },undef,$c->user->planet)
+       );
+
+       my $calls = $dbh->prepare(q{
+               SELECT id,landing_tick,dc,curreta
+                       ,array_accum(race::text) AS race
+                       ,array_accum(amount) AS amount
+                       ,array_accum(eta) AS eta
+                       ,array_accum(shiptype) AS shiptype
+                       ,array_accum(coords) AS attackers
+               FROM (SELECT c.id, c.landing_tick
+                       ,dc.username AS dc, (c.landing_tick - tick()) AS curreta
+                       ,p2.race, i.amount, i.eta, i.shiptype, p2.alliance
+                       ,coords(p2.x,p2.y,p2.z)
+                       FROM calls c
+                               LEFT OUTER JOIN incomings i ON i.call = c.id
+                               LEFT OUTER JOIN current_planet_stats p2 ON i.sender = p2.id
+                               LEFT OUTER JOIN users dc ON c.dc = dc.uid
+                       WHERE c.member = $1 AND c.landing_tick >= tick()
+                       GROUP BY c.id, c.landing_tick, dc.username
+                               ,p2.race,i.amount,i.eta,i.shiptype,p2.alliance,p2.x,p2.y,p2.z
+                       ) c
+               GROUP BY id, landing_tick,dc,curreta
+               });
+
+       $calls->execute($c->user->id);
+       $c->stash(calls => $calls->fetchall_arrayref({}) );
+
+       my $query = $dbh->prepare(q{SELECT f.id, coords(x,y,z), target, mission
+               , f.amount, tick, back
+FROM fleets f
+LEFT OUTER JOIN current_planet_stats p ON f.target = p.id
+WHERE NOT ingal AND f.uid = ? AND f.sender = ? AND
+       (back >= ? OR (tick >= tick() -  24 AND name = 'Main'))
+GROUP BY f.id, x,y,z, mission, tick,back,f.amount,f.target
+ORDER BY x,y,z,mission,tick
+               });
+
+       my $ships = $dbh->prepare(q{SELECT ship,amount FROM fleet_ships
+               WHERe id = ? ORDER BY num
+               });
+
+       $query->execute($c->user->id,$c->user->planet,$c->stash->{TICK});
+       my @fleets;
+       while (my $fleet = $query->fetchrow_hashref){
+               my @ships;
+               $ships->execute($fleet->{id});
+               while (my $ship = $ships->fetchrow_hashref){
+                       push @ships,$ship;
+               }
+               $fleet->{ships} = \@ships;
+               push @fleets,$fleet;
+       }
+       $c->stash(fleets => \@fleets);
+
+       my $announcements = $dbh->prepare(q{SELECT ft.ftid, u.username,ft.subject,
+               count(NULLIF(COALESCE(fp.time > ftv.time,TRUE),FALSE)) AS unread,count(fp.fpid) AS posts,
+               date_trunc('seconds',max(fp.time)::timestamp) as last_post,
+               min(fp.time)::date as posting_date, ft.sticky
+               FROM forum_threads ft JOIN forum_posts fp USING (ftid)
+                       JOIN users u ON u.uid = ft.uid
+                       LEFT OUTER JOIN (SELECT * FROM forum_thread_visits WHERE uid = $1) ftv ON ftv.ftid = ft.ftid
+               WHERE ft.fbid = 1
+               GROUP BY ft.ftid, ft.subject,ft.sticky,u.username
+               HAVING count(NULLIF(COALESCE(ft.sticky OR fp.time > ftv.time,TRUE),FALSE)) >= 1
+               ORDER BY sticky DESC,last_post DESC
+               });
+       $announcements->execute($c->user->id);
+       $c->stash(announcements => $announcements->fetchall_arrayref({}) );
+}
+
+sub posthostupdate : Local {
+       my ( $self, $c ) = @_;
+       my $dbh = $c->model;
+
+       $dbh->do(q{UPDATE users SET hostmask = ? WHERE uid = ?
+               },undef, html_escape $c->req->param('hostname'), $c->user->id);
+
+       $c->res->redirect($c->uri_for(''));
+}
+
+sub postsmsupdate : Local {
+       my ( $self, $c ) = @_;
+       my $dbh = $c->model;
+
+       $dbh->do(q{UPDATE users SET sms = ? WHERE uid = ?
+               },undef, html_escape $c->req->param('sms'), $c->user->id);
+
+       $c->res->redirect($c->uri_for(''));
+}
+
+sub postfleetupdate : Local {
+       my ( $self, $c ) = @_;
+       my $dbh = $c->model;
+
+       my $fleet = $c->req->param('fleet');
+       $fleet =~ s/,//g;
+       my $amount = 0;
+       my @ships;
+       while ($fleet =~ m/((?:[A-Z][a-z]+ )*[A-Z][a-z]+)\s+(\d+)/g){
+               $amount += $2;
+               push @ships, [$1,$2];
+       }
+       if ($amount){
+               $dbh->begin_work;
+               eval{
+                       my $insert = $dbh->prepare(q{INSERT INTO fleets
+                               (uid,sender,name,mission,tick,amount)
+                               VALUES (?,?,'Main','Full fleet',tick(),?) RETURNING id});
+                       my ($id) = $dbh->selectrow_array($insert,undef,$c->user->id
+                               ,$c->user->planet,$amount);
+                       $insert = $dbh->prepare(q{INSERT INTO fleet_ships
+                               (id,ship,amount) VALUES (?,?,?)});
+                       for my $s (@ships){
+                               unshift @{$s},$id;
+                               $insert->execute(@{$s});
+                       }
+                       $dbh->commit;
+               };
+               if ($@){
+                       if ($@ =~ m/insert or update on table "fleet_ships" violates foreign key constraint "fleet_ships_ship_fkey"\s+DETAIL:\s+Key \(ship\)=\(([^)]+)\)/){
+                               $c->flash( error => "'$1' is NOT a valid ship");
+                       }else{
+                               $c->flash( error => $@);
+                       }
+                       $dbh->rollback;
+               }
+       }else{
+               $c->flash( error => 'Fleet does not contain any ships');
+       }
+
+       $c->res->redirect($c->uri_for(''));
+}
+
+sub postfleetsupdates : Local {
+       my ( $self, $c ) = @_;
+       my $dbh = $c->model;
+
+       my $log = $dbh->prepare(q{INSERT INTO forum_posts (ftid,uid,message) VALUES(
+               (SELECT ftid FROM users WHERE uid = $1),$1,$2)
+               });
+       $dbh->begin_work;
+       if ($c->req->param('cmd') eq 'Recall Fleets'){
+               my $updatefleets = $dbh->prepare(q{UPDATE fleets
+                       SET back = tick() + (tick() - (tick - eta))
+                       WHERE uid = ? AND id = ? AND back > tick()+eta
+               });
+
+               for my $param ($c->req->param()){
+                       if ($param =~ /^change:(\d+)$/){
+                               $updatefleets->execute($c->user->id,$1);
+                               $log->execute($c->user->id,"Member recalled fleet $1");
+                       }
+               }
+       }elsif ($c->req->param('cmd') eq 'Change Fleets'){
+               my $updatefleets = $dbh->prepare(q{UPDATE fleets
+                       SET back = ? WHERE uid = ? AND id = ?});
+
+               for my $param ($c->req->param()){
+                       if ($param =~ /^change:(\d+)$/){
+                               my $back = $c->req->param("back:$1");
+                               $updatefleets->execute($back,$c->user->id,$1);
+                               $log->execute($c->user->id,"Member set fleet $1 to be back tick: $back");
+                       }
+               }
+       }
+       $dbh->commit;
+
+       $c->res->redirect($c->uri_for(''));
+}
+
+
 sub points : Local {
        my ( $self, $c, $order ) = @_;
        my $dbh = $c->model;
index 32d056164d62bfdfb4834840de2ccfc1e224326b..3d134e49da106a47620c2c57ab5f4ba1d87b3cef 100644 (file)
@@ -1,5 +1,5 @@
 <ul class="linkbar">
-       <li><a href="/index">Main page</a></li>
+       <li><a href="[% c.check_user_roles("member_menu") ? '/members' : '/index' %]">Main page</a></li>
 
        <li><a href="/forum">Forum</a></li>
        <li><a href="/forum/search">Forum search</a></li>
index ccab9a84bbcceba17681695125322a504ce02fe7..7d29cf16a45ad3879a27927531a0775a12903d2d 100644 (file)
@@ -1,5 +1 @@
 [% META title = 'Main' %]
-<p>
-Hello [% user.name %]
-</p>
-
diff --git a/root/src/members/index.tt2 b/root/src/members/index.tt2
new file mode 100644 (file)
index 0000000..05e56d5
--- /dev/null
@@ -0,0 +1,148 @@
+[% META title = 'Main' %]
+<div class="leftinfo">
+<table class="boards">
+[% FOR a IN announcements %]
+       <tr class="[% loop.count % 2 ? 'even' : 'odd' %]">
+               <td align="center">[% a.unread %]</td>
+               <td align="center">[% a.posts %]</td>
+               <td[% IF a.sticky %] class="sticky"[% END %]><a href="[% c.uri_for('/forum/thread',a.ftid) %]">&nbsp;[% a.subject %]&nbsp;</a></td>
+               <td align="left">[% a.posting_date %]</td>
+               <td align="center">[% a.username %]</td>
+               <td align="left">[% a.last_post %]</td>
+       </tr>
+[% END %]
+</table>
+</div>
+[% IF c.user.planet %]
+<img class="graph" src="[% c.uri_for('/graphs/planetvsnd',c.user.planet,STICK) %]" alt="Your planet vs ND avg" height="300" width="500">
+[% END %]
+<div class="clear"></div>
+
+[% IF c.user.planet %]
+<table class="stats">
+       <tr align="center"><th colspan="4">Rank</th>
+       </tr>
+       <tr><th>Size</th><th>Score</th><th>Value</th><th>XP</th><th>X</th><th>Y</th><th>Z</th><th>Planet</th><th>Race</th><th>Size</th><th>Score</th><th>Value</th>
+               <th>XP</th>
+       </tr>
+       <tr class="odd">
+               [% p.sizerankimg = (p.sizerank_gain_day == 0 ? 'stay' : (p.sizerank_gain_day < 0 ? 'up' : 'down')) %]
+               <td title="[% p.sizerank_gain_day %] Today | [% p.sizerank_gain %] Tick">[% p.sizerank %] <img src="/static/images/[% p.sizerankimg %].png" alt="[% p.sizerankimg %]"> </td>
+               [% p.scorerankimg = (p.scorerank_gain_day == 0 ? 'stay' : (p.scorerank_gain_day < 0 ? 'up' : 'down')) %]
+               <td title="[% p.scorerank_gain_day %] Today | [% p.scorerank_gain %] Tick">[% p.scorerank %] <img src="/static/images/[% p.scorerankimg %].png" alt="[% p.scorerankimg %]"> </td>
+               [% p.valuerankimg = (p.valuerank_gain_day == 0 ? 'stay' : (p.valuerank_gain_day < 0 ? 'up' : 'down')) %]
+               <td title="[% p.valuerank_gain_day %] Today | [% p.valuerank_gain %] Tick">[% p.valuerank %] <img src="/static/images/[% p.valuerankimg %].png" alt="[% p.valuerankimg %]"> </td>
+               [% p.xprankimg = (p.xprank_gain_day == 0 ? 'stay' : (p.xprank_gain_day < 0 ? 'up' : 'down')) %]
+               <td title="[% p.xprank_gain_day %] Today | [% p.xprank_gain %] Tick">[% p.xprank %] <img src="/static/images/[% p.xprankimg %].png" alt="[% p.xprankimg %]"> </td>
+
+               <td>[% p.x %] </td>
+               <td><a href="[% c.uri_for('/stats','galaxy',p.x,p.y) %]">[% p.y %]</a></td>
+               <td><a href="[% c.uri_for('/stats','planet',p.id) %]">[% p.z %]</a></td>
+               <td align="center">[% p.ruler %] <b>OF</b> [% p.planet %]</td>
+               <td align="center">[% p.race %]</td>
+               [% p.sizeimg = (p.size_gain_day == 0 ? 'stay' : (p.size_gain_day > 0 ? 'up' : 'down')) %]
+               <td title="[% p.size_gain_day %] Today | [% p.size_gain %] Tick">[% comma(p.size) %] <img src="/static/images/[% p.sizeimg %].png" alt="[% p.sizeimg %]"> </td>
+               [% p.scoreimg = (p.score_gain_day == 0 ? 'stay' : (p.score_gain_day > 0 ? 'up' : 'down')) %]
+               <td title="[% comma(p.score_gain_day) %] Today | [% comma(p.score_gain) %] Tick">[% comma(p.score) %] <img src="/static/images/[% p.scoreimg %].png" alt="[% p.scoreimg %]"> </td>
+               [% p.valueimg = (p.value_gain_day == 0 ? 'stay' : (p.value_gain_day > 0 ? 'up' : 'down')) %]
+               <td title="[% comma(p.value_gain_day) %] Today | [% comma(p.value_gain) %] Tick">[% comma(p.value) %] <img src="/static/images/[% p.valueimg %].png" alt="[% p.valueimg %]"> </td>
+               [% p.xpimg = (p.xp_gain_day == 0 ? 'stay' : (p.xp_gain_day > 0 ? 'up' : 'down')) %]
+               <td title="[% comma(p.xp_gain_day) %] Today | [% comma(p.xp_gain) %] Tick">[% comma(p.xp) %] <img src="/static/images/[% p.xpimg %].png" alt="[% p.xpimg %]"> </td>
+       </tr>
+</table>
+[% END %]
+[% IF calls %]
+<table>
+       <tr><th>Call</th><th>DC</th><th>Landing tick</th><th>Races</th><th>Amount</th><th>Shiptypes</th><th>Current eta</th><th>Inital eta</th><th>Attackers</th></tr>
+       [% FOR call IN calls %]
+       <tr align="center" class="[% loop.count % 2 == 0 ? 'even' : 'odd' %]">
+               <td class="[% UNLESS call.dc %]Hostile[%END%]"><a href="[% c.uri_for('/calls/edit',call.id) %]">[% call.id %]</a></td>
+               <td>[% call.dc %]</td>
+               <td>[% call.landing_tick %]</td>
+               <td>[% call.race.unique.join('/') %]</td>
+               <td>[% call.amount.join('/') %]</td>
+               <td>[% call.shiptype.unique.join('/') | html %]</td>
+               <td>[% call.curreta %]</td>
+               <td>[% call.eta.unique.join('/') %]</td>
+               <td>[% FOR a IN call.attackers %]
+                       <a href="[% c.uri_for('/stats/find',a) %]">[% a %]</a>
+                       [% UNLESS loop.last %]/[%END%]
+               [%END%]</td>
+       </tr>
+       [% END %]
+</table>
+[% END %]
+<div class="leftinfo">
+<fieldset class="forum-post"> <legend>Account details</legend>
+       <ul>
+       <li> ND rank (by score): [% u.rank %] </li>
+       <li> Defense points: [% u.defense_points %] </li>
+       <li> Attack points: [% u.attack_points %] </li>
+       <li> Scan points: [% u.scan_points %] </li>
+       <li> Humor points: [% u.humor_points %] </li>
+       <li> Total points: [% u.total_points %] </li>
+       <li> Member of the following groups: [% groups.join(',') %]</li>
+       </ul>
+</fieldset>
+
+<fieldset class="forum-post"> <legend>Fleets</legend>
+<form action="[% c.uri_for('postfleetsupdates') %]" method="post">
+       <table>
+       <tr><td></td><th>Target</th><th>Mission</th><th>Amount</th><th>Landing Tick</th><th>Back home</th><th>change?</th></tr>
+[% FOR f IN fleets %]
+       <tr class="[% loop.count % 2 == 0 ? 'even' : 'odd' %]">
+               <td><input type="button" onclick="$('#fleet[% f.id %]').toggle()" value="&dArr;" title="Show fleets"></td>
+               <td>[% IF f.target %]<a href="[% c.uri_for('/stats/planet',f.target) %]">[% f.coords %]</a>[% END %]</td>
+               <td>[% f.mission %]</td>
+               <td>[% f.amount %]</td><td>[% f.tick %]</td>
+               <td>[% IF f.back %]<input style="width:5em" type="text" name="back:[% f.id %]" value="[% f.back %]">[% END %]</td>
+               <td>[% IF f.back %]<input type="checkbox" name="change:[% f.id %]">[% END %]</td>
+       </tr>
+       <tr id="fleet[% f.id %]" class="hidden">
+               <td>
+               <td colspan="5"><table>
+       [% FOR s IN f.ships %]
+                       <tr class="[% loop.count % 2 == 0 ? 'even' : 'odd' %]">
+                               <td>[% s.ship %]</td><td>[% s.amount %]</td>
+                       </tr>
+       [% END %]
+                       </table></td>
+       </tr>
+[% END %]
+       </table>
+       <p>
+               <input type="submit" name="cmd" value="Change Fleets">
+               <input type="submit" name="cmd" value="Recall Fleets">
+       </p>
+</form>
+</fieldset>
+<form action="[% c.uri_for('posthostupdate') %]" method="post">
+<fieldset class="forum-post"> <legend>Hostname</legend>
+       <p>Hostname:
+       <input style="width:25em" type="text" name="hostname" value="[% u.hostmask %]">
+       <input type="submit" value="Submit">
+       </p>
+</fieldset>
+</form>
+<form action="[% c.uri_for('postsmsupdate') %]" method="post">
+<fieldset class="forum-post"> <legend>SMS</legend>
+       <p>Number:
+       <input type="text" name="sms" value="[% u.sms %]">
+       <input type="submit" value="Submit">
+       </p>
+</fieldset>
+</form>
+[% IF c.user.planet %]
+<form action="[% c.uri_for('postfleetupdate') %]" method="post">
+<fieldset class="forum-post"> <legend>Fleet</legend>
+       <p>Paste your total fleet from ships section on overview here (do it daily to see the menus):</p>
+       <textarea rows="15" cols="50" name="fleet"></textarea>
+       <br><input type="submit" value="Submit">
+</fieldset>
+</form>
+[% END %]
+</div>
+[% IF c.user.planet %]
+<img class="graph" src="[% c.uri_for('/graphs/planetstats',c.user.planet,STICK) %]" alt="stats for your planet" height="300" width="500">
+<img class="graph" src="[% c.uri_for('/graphs/planetranks',c.user.planet,STICK) %]" alt="ranks for your planet" height="300" width="500">
+[% END %]
index 84d6b4b47e42b47b4215e39a0a17e7340f6d9833..9e79ac1d604dfaf28a4255ec8184a07cc9343797 100644 (file)
@@ -234,3 +234,11 @@ fieldset.incluster {
        border-width: 2px;
        border-color: red;
 }
+
+div#error {
+       font-weight: bold;
+       font-size: larger;
+       color: red;
+       border-style: solid;
+       border-width: 1px;
+}
diff --git a/templates/main.tmpl b/templates/main.tmpl
deleted file mode 100644 (file)
index 97ca018..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-<div class="leftinfo">
-<table class="boards">
-               <TMPL_LOOP Announcements>
-       <tr class="<TMPL_IF __odd__>odd<TMPL_ELSE>even</TMPL_IF>">
-               <td align="center"><TMPL_VAR NAME=Unread></td>
-               <td align="center"><TMPL_VAR NAME=Posts></td>
-               <td<TMPL_IF Sticky> class="sticky"</TMPL_IF>><a href="/forum?t=<TMPL_VAR NAME=Id>#NewPosts">&nbsp;<TMPL_VAR NAME=Subject>&nbsp;</a></td>
-               <td align="left"><TMPL_VAR NAME=Posting_date></td>
-               <td align="center"><TMPL_VAR NAME=Username></td>
-               <td align="left"><TMPL_VAR NAME=Last_post></td>
-       </tr>
-               </TMPL_LOOP>
-</table>
-</div>
-<TMPL_IF PLANET>
-<img class="graph" src="/graph/planetvsnd/<TMPL_VAR NAME=PLANET>" alt="Your planet vs ND avg" height="300" width="500"/>
-</TMPL_IF>
-<div class="clear"></div>
-
-<TMPL_IF PLANET>
-<table class="stats">
-       <tr align="center"><th colspan="4">Rank</th>
-       </tr>
-       <tr><th>Size</th><th>Score</th><th>Value </th><th>XP</th><th>X</th><th>Y</th><th>Z</th><th>Planet</th><th>Race</th><th>Size</th><th>Score</th><th>Value</th>
-               <th>XP</th>
-       </tr>
-<TMPL_LOOP Planets>
-       <tr class="<TMPL_IF __odd__>odd<TMPL_ELSE>even</TMPL_IF>">
-
-               <td title="<TMPL_VAR NAME=SizeRank_Gain_day> Today | <TMPL_VAR NAME=SizeRank_Gain> Tick"><TMPL_VAR NAME=SizeRank> <img src="/images/<TMPL_VAR NAME=SizeRankImg>.png" alt="<TMPL_VAR NAME=SizeImg>"/> </td>
-               <td title="<TMPL_VAR NAME=ScoreRank_Gain_day> Today | <TMPL_VAR NAME=ScoreRank_Gain> Tick"><TMPL_VAR NAME=ScoreRank> <img src="/images/<TMPL_VAR NAME=ScoreRankImg>.png" alt="<TMPL_VAR NAME=ScoreImg>"/> </td>
-               <td title="<TMPL_VAR NAME=ValueRank_Gain_day> Today | <TMPL_VAR NAME=ValueRank_Gain> Tick"><TMPL_VAR NAME=ValueRank> <img src="/images/<TMPL_VAR NAME=ValueRankImg>.png" alt="<TMPL_VAR NAME=ValueImg>"/> </td>
-               <td title="<TMPL_VAR NAME=XPRank_Gain_day> Today | <TMPL_VAR NAME=XPRank_Gain> Tick"><TMPL_VAR NAME=XPRank> <img src="/images/<TMPL_VAR NAME=XPRankImg>.png" alt="<TMPL_VAR NAME=XPImg>"/> </td>
-
-               <td><TMPL_VAR NAME=X></td>
-               <td><a href="/check?coords=<TMPL_VAR NAME=X>:<TMPL_VAR NAME=Y>"><TMPL_VAR NAME=Y></a></td>
-               <td><a href="/check?coords=<TMPL_VAR NAME=X>:<TMPL_VAR NAME=Y>:<TMPL_VAR NAME=Z>"><TMPL_VAR NAME=Z></a></td>
-               <td align="center"><TMPL_VAR NAME=Planet></td>
-               <td align="center"><TMPL_VAR NAME=Race></td>
-               <td title="<TMPL_VAR NAME=Size_Gain_day> Today | <TMPL_VAR NAME=Size_Gain> Tick"><TMPL_VAR NAME=Size> <img src="/images/<TMPL_VAR NAME=SizeImg>.png" alt="<TMPL_VAR NAME=SizeImg>"/> </td>
-               <td title="<TMPL_VAR NAME=Score_Gain_day> Today | <TMPL_VAR NAME=Score_Gain> Tick"><TMPL_VAR NAME=Score> <img src="/images/<TMPL_VAR NAME=ScoreImg>.png" alt="<TMPL_VAR NAME=ScoreImg>"/> </td>
-               <td title="<TMPL_VAR NAME=Value_Gain_day> Today | <TMPL_VAR NAME=Value_Gain> Tick"><TMPL_VAR NAME=Value> <img src="/images/<TMPL_VAR NAME=ValueImg>.png" alt="<TMPL_VAR NAME=ValueImg>"/> </td>
-               <td title="<TMPL_VAR NAME=XP_Gain_day> Today | <TMPL_VAR NAME=XP_Gain> Tick"><TMPL_VAR NAME=XP> <img src="/images/<TMPL_VAR NAME=XPImg>.png" alt="<TMPL_VAR NAME=XPImg>"/> </td>
-               </tr>
-       </TMPL_LOOP>
-       </table>
-</TMPL_IF>
-<TMPL_IF Calls>
-<table>
-       <tr><th>Call</th><th>DC</th><th>Landing tick</th><th>Races</th><th>Amount</th><th>Shiptypes</th><th>Current eta</th><th>Inital eta</th><th>Attackers</th></tr>
-<TMPL_LOOP Calls>
-       <tr align="center" class="<TMPL_IF __odd__>odd<TMPL_ELSE>even</TMPL_IF>">
-               <td class="<TMPL_VAR NAME=Covered>"><a href="/calls?call=<TMPL_VAR NAME=Id>"><TMPL_VAR NAME=Id></a></td>
-               <td class="<TMPL_VAR NAME=ActiveDC>"><TMPL_VAR NAME=DC></td>
-               <td><TMPL_VAR NAME=Landing_Tick></td>
-               <td><TMPL_VAR NAME=Race></td>
-               <td><TMPL_VAR NAME=Amount></td>
-               <td><TMPL_VAR NAME=Shiptype></td>
-               <td><TMPL_VAR NAME=Curreta></td>
-               <td><TMPL_VAR NAME=Eta></td>
-               <td><TMPL_VAR ESCAPE=NONE NAME=Attackers></td>
-       </tr>
-</TMPL_LOOP>
-</table>
-</TMPL_IF>
-<div class="leftinfo">
-<fieldset class="forum-post"> <legend>Account details</legend>
-       <ul>
-       <TMPL_IF isMEMBER>
-       <li> ND rank (by score): <TMPL_VAR NAME=NDRank> </li>
-       <li> Defense points: <TMPL_VAR NAME=DefensePoints> </li>
-       <li> Attack points: <TMPL_VAR NAME=AttackPoints> </li>
-       <li> Scan points: <TMPL_VAR NAME=ScanPoints> </li>
-       <li> Humor points: <TMPL_VAR NAME=HumorPoints> </li>
-       <li> Total points: <TMPL_VAR NAME=TotalPoints> </li>
-       </TMPL_IF>
-       <li> Member of the following groups: <TMPL_LOOP Groups><TMPL_VAR NAME=Name><TMPL_UNLESS __last__>, </TMPL_UNLESS></TMPL_LOOP></li>
-       </ul>
-</fieldset>
-
-<fieldset class="forum-post"> <legend>Fleets</legend>
-<form action="<TMPL_VAR NAME=PAGE>" method="post">
-       <table>
-       <tr><th>Target</th><th>Mission</th><th>Amount</th><th>Landing Tick</th><th>Back home</th><th>change?</th></tr>
-       <TMPL_LOOP Fleets>
-       <tr class="<TMPL_IF __odd__>odd<TMPL_ELSE>even</TMPL_IF>" onclick="toggleVisibility('fleet<TMPL_VAR NAME=Id>')">
-               <td><TMPL_VAR NAME=Target></td>
-               <td><a href="javascript://"  onclick="toggleVisibility('fleet<TMPL_VAR NAME=Id>')"><TMPL_VAR NAME=Mission></a></td>
-               <td><TMPL_VAR NAME=Amount></td><td><TMPL_VAR NAME=Tick></td>
-               <td><TMPL_IF Back><input class="coordsinput" type="text" name="back:<TMPL_VAR NAME=Id>" value="<TMPL_VAR NAME=Back>"/></TMPL_IF></td>
-               <td><TMPL_IF Back><input type="checkbox" name="change:<TMPL_VAR NAME=Id>"/></TMPL_IF></td>
-       </tr>
-       <tr id="fleet<TMPL_VAR NAME=Id>" style="z-index:1; display:none;">
-               <td/>
-               <td colspan="5"><table>
-               <TMPL_LOOP Ships>
-               <tr class="<TMPL_IF __odd__>odd<TMPL_ELSE>even</TMPL_IF>">
-                       <td><TMPL_VAR NAME=Ship></td><td><TMPL_VAR NAME=Amount></td>
-               </tr>
-               </TMPL_LOOP>
-               </table></td></tr>
-       </TMPL_LOOP>
-       </table>
-       <p>
-               <input type="hidden" name="page" value="<TMPL_VAR NAME=PAGE>"/>
-               <input type="submit" name="cmd" value="Change Fleets"/>
-               <input type="submit" name="cmd" value="Recall Fleets"/>
-       </p>
-</form>
-</fieldset>
-<form action="<TMPL_VAR NAME=PAGE>" method="post">
-<fieldset class="forum-post"> <legend>Hostname</legend>
-       <p>Hostname: 
-       <input style="width:25em" type="text" name="hostname" value="<TMPL_VAR NAME=Hostname>"/>
-       <input type="submit" value="Submit"/>
-       </p>
-</fieldset>
-</form>
-<form action="<TMPL_VAR NAME=PAGE>" method="post">
-<fieldset class="forum-post"> <legend>SMS</legend>
-       <p>Number: 
-       <input type="text" name="sms" value="<TMPL_VAR NAME=SMS>"/>
-       <input type="submit" value="Submit"/>
-       </p>
-</fieldset>
-</form>
-<TMPL_IF PLANET>
-<form action="<TMPL_VAR NAME=PAGE>" method="post">
-<fieldset class="forum-post"> <legend>Fleet</legend>
-       <p>Paste your total fleet from ships section on overview here (do it daily to see the menus):</p>
-       <textarea rows="15" cols="50" name="fleet"></textarea>
-       <input type="hidden" name="cmd" value="fleet"/>
-       <input type="hidden" name="page" value="<TMPL_VAR NAME=PAGE>"/>
-       <br/><input type="submit" value="Submit"/>
-</fieldset>
-</form>
-</TMPL_IF>
-</div>
-<TMPL_IF PlanetCoords>
-<img class="graph" src="/graph/stats/<TMPL_VAR NAME=PlanetCoords>" alt="stats for your planet" height="300" width="500"/>
-<img class="graph" src="/graph/ranks/<TMPL_VAR NAME=PlanetCoords>" alt="ranks for your planet" height="300" width="500"/>
-</TMPL_IF>