]> ruin.nu Git - ndwebbie.git/commitdiff
Main and Intel pages updated for new scan structure
authorMichael Andreen <harv@ruin.nu>
Fri, 28 Dec 2007 08:19:39 +0000 (09:19 +0100)
committerMichael Andreen <harv@ruin.nu>
Fri, 28 Dec 2007 08:19:39 +0000 (09:19 +0100)
NDWeb/Include.pm
NDWeb/Pages/Main.pm
NDWeb/XMLPage.pm
htdocs/misc.js [new file with mode: 0644]
templates/intel.tmpl
templates/main.tmpl
templates/skel.tmpl

index 5ef1dbae143a5330f86313ff3c14f8d1a1dc80ac..2f062bc23fc9042859e93cc6a50ffe1a5b9ac317 100644 (file)
@@ -78,7 +78,7 @@ sub intelquery {
        my ($columns,$where) = @_;
        return qq{
 SELECT $columns, i.mission, i.tick AS landingtick,MIN(i.eta) AS eta, i.amount, i.ingal, u.username
-FROM (intel i NATURAL JOIN users u)
+FROM (fleets i NATURAL JOIN users u)
        JOIN current_planet_stats t ON i.target = t.id
        JOIN current_planet_stats o ON i.sender = o.id
 WHERE $where 
index d35a5b174fa13174b824627d5c12622d429c46e4..d32124827d5bf0f0af441f09e9ebfc846bbc1a1b 100644 (file)
@@ -34,47 +34,57 @@ sub render_body {
        $self->{TITLE} = 'Main Page';
        my $DBH = $self->{DBH};
 
-       my $error;
-
        if (defined param('cmd')){
                if (param('cmd') eq 'fleet'){
-                       $DBH->begin_work;
-                       my $fleet = $DBH->prepare("SELECT id FROM fleets WHERE uid = ? AND fleet = 0");
-                       my ($id) = $DBH->selectrow_array($fleet,undef,$ND::UID);
-                       unless ($id){
-                               my $insert = $DBH->prepare(q{INSERT INTO fleets (uid,target,mission,landing_tick,fleet,eta,back) VALUES (?,?,'Full fleet',0,0,0,0)});
-                               $insert->execute($ND::UID,$self->{PLANET});
-                               ($id) = $DBH->selectrow_array($fleet,undef,$ND::UID);
-                       }
-                       my $delete = $DBH->prepare("DELETE FROM fleet_ships WHERE fleet = ?");
-                       my $insert = $DBH->prepare('INSERT INTO fleet_ships (fleet,ship,amount) VALUES (?,?,?)');
-                       $fleet = param('fleet');
+                       my $fleet = param('fleet');
                        $fleet =~ s/,//g;
-                       my $match = 0;
+                       my $amount = 0;
+                       my @ships;
                        while ($fleet =~ m/((?:[A-Z][a-z]+ )*[A-Z][a-z]+)\s+(\d+)/g){
-                               unless($match){
-                                       $match = 1;
-                                       $delete->execute($id);
+                               $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;
                                }
-                               $insert->execute($id,$1,$2) or $error .= '<p>'.$DBH->errstr.'</p>';
+                       }else{
+                               warn 'Fleet does not contain any ships';
                        }
-                       $fleet = $DBH->prepare('UPDATE fleets SET landing_tick = tick() WHERE id = ?');
-                       $fleet->execute($id) if $match;
-                       $DBH->commit;
                }elsif (param('cmd') eq 'Recall Fleets'){
                        $DBH->begin_work;
-                       my $updatefleets = $DBH->prepare('UPDATE fleets SET back = tick() + (tick() - (landing_tick - eta))  WHERE uid = ? AND id = ?');
+                       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{
-                                               $error .= "<p> Something went wrong: ".$DBH->errstr."</p>";
+                                               warn $DBH->errstr;
                                        }
                                }
                        }
-                       $DBH->commit or $error .= '<p>'.$DBH->errstr.'</p>';
+                       $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 = ?');
@@ -83,11 +93,11 @@ sub render_body {
                                        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{
-                                               $error .= "<p> Something went wrong: ".$DBH->errstr."</p>";
+                                               warn $DBH->errstr;
                                        }
                                }
                        }
-                       $DBH->commit or $error .= '<p>'.$DBH->errstr.'</p>';
+                       $DBH->commit or warn $DBH->errstr;
                }
        }
        if (param('sms')){
@@ -144,8 +154,8 @@ sub render_body {
                WHERE c.member = ? AND (c.landing_tick - tick())  > 0
                GROUP BY c.id, c.landing_tick,dc.username,c.covered
                ORDER BY c.landing_tick DESC
-               })or $error .= $DBH->errstr;
-       $query->execute($ND::UIN) or $error .= $DBH->errstr;
+               })or warn  $DBH->errstr;
+       $query->execute($ND::UIN) or warn $DBH->errstr;
 
        my $i = 0;
        my @calls;
@@ -197,28 +207,38 @@ sub render_body {
        }
 
 
-       $query = $DBH->prepare(q{SELECT f.fleet,f.id, coords(x,y,z) AS target, mission, sum(fs.amount) AS amount, landing_tick, back
+       $query = $DBH->prepare(q{SELECT f.id, coords(x,y,z) AS target, mission
+               , f.amount, tick, back
 FROM fleets f 
-JOIN fleet_ships fs ON f.id = fs.fleet 
-JOIN current_planet_stats p ON f.target = p.id
-WHERE f.uid = ? AND (f.fleet = 0 OR back >= ?)
-GROUP BY f.fleet,f.id, x,y,z, mission, landing_tick,back
-ORDER BY f.fleet
+JOIN fleet_ships fs USING (id)
+LEFT OUTER JOIN current_planet_stats p ON f.target = p.id
+WHERE 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
                });
 
-       $query->execute($ND::UID,$self->{TICK}) or $error .= '<p>'.$DBH->errstr.'</p>';
+       my $ships = $DBH->prepare(q{SELECT ship,amount FROM fleet_ships where id = ?});
+
+       $query->execute($self->{UID},$self->{PLANET},$self->{TICK}) or warn $DBH->errstr;
        my @fleets;
        $i = 0;
        while (my $fleet = $query->fetchrow_hashref){
-               $i++;
                $fleet->{ODD} = $i % 2;
+               my @ships;
+               $ships->execute($fleet->{id});
+               my $j = 0;
+               while (my $ship = $ships->fetchrow_hashref){
+                       $ship->{ODD} = $i++ % 2;
+                       push @ships,$ship;
+               }
+               $fleet->{ships} = \@ships;
                push @fleets,$fleet;
        }
        $BODY->param(Fleets => \@fleets);
 
        $BODY->param(SMS => $sms);
        $BODY->param(Hostname => $hostname);
-       $BODY->param(Error => $error);
        return $BODY;
 }
 
index 3e026080963f0fd4bcbe52dd322e199576e09379..eb25c6815a7533a8acb6799837b354b8165eefbd 100644 (file)
@@ -101,7 +101,8 @@ sub render : method {
        }
 
        unless ($self->{XML}){
-               my $fleetupdate = $DBH->selectrow_array('SELECT landing_tick FROM fleets WHERE uid = ? AND fleet = 0',undef,$self->{UID});
+               #TODO: Need to fix this with new stuff.
+               my $fleetupdate = $DBH->selectrow_array(q{SELECT tick FROM fleets WHERE sender = ? AND mission = 'Full fleet' AND tick > tick() - 24},undef,$self->{PLANET});
 
                $fleetupdate = 0 unless defined $fleetupdate;
 
diff --git a/htdocs/misc.js b/htdocs/misc.js
new file mode 100644 (file)
index 0000000..a21f365
--- /dev/null
@@ -0,0 +1,9 @@
+function toggleVisibility(id) {
+       var obj=document.getElementById(id);
+       if (obj.style.display=='none') {
+               obj.style.display='';
+       }
+       else {
+               obj.style.display='none';
+       }
+}
index fccdf1b8751f9487eec6dab397cad801797f42cf..4158ad63a1f2fc6dccb6ac6ea33a9746eca2c874 100644 (file)
 </TMPL_LOOP>
 
        <form action="<TMPL_VAR NAME=PAGE>" method="post"><fieldset> <legend>Coords</legend>
-       <p>Paste a list of coords here</p>
+       <p>Paste a list of coords that you want to check here</p>
        <textarea rows="25" cols="80" name="coords"></textarea>
        <input type="hidden" name="cmd" value="coords"/>
        <input type="hidden" name="page" value="<TMPL_VAR NAME=PAGE>"/>
index 344a15eb6e400ad09fa15029905abc6d3ad8a85b..4f8a95cc88399886b070b8a16c9b6390c716a429 100644 (file)
@@ -1,5 +1,4 @@
 <TMPL_VAR NAME=Error>
-<p>Hello <TMPL_VAR NAME=Username>.</p>
 <div class="leftinfo">
 <fieldset class="forum-post"> <legend>Message from HC<TMPL_IF isHC> <a href="motd?">EDIT</a></TMPL_IF></legend>
        <TMPL_VAR NAME=MOTD>
@@ -44,7 +43,7 @@
        <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=DC>"><TMPL_VAR NAME=Username></td>
-               <td><TMPL_VAR NAME=Landing_tick></td>
+               <td><TMPL_VAR NAME=Tick></td>
                <td><TMPL_VAR NAME=Race></td>
                <td><TMPL_VAR NAME=Amount></td>
                <td><TMPL_VAR NAME=Shiptype></td>
        <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>">
-               <td><TMPL_VAR NAME=Target></td><td><TMPL_VAR NAME=Mission></td>
-               <td><TMPL_VAR NAME=Amount></td><td><TMPL_VAR NAME=Landing_Tick></td>
+               <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 Fleet><input class="coordsinput" type="text" name="back:<TMPL_VAR NAME=Id>" value="<TMPL_VAR NAME=Back>"/></TMPL_IF></td>
                <td><TMPL_IF Fleet><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>
        </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>
        <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"/>
index 75e1339c166f71c9f08b8bf540bba383b992b01d..fed216c1d28c0e89a5bbbf94a2e5261bbffe04f0 100644 (file)
@@ -9,6 +9,7 @@
        <link rel="stylesheet" type="text/css" href="/stylesheets/<TMPL_IF CSS><TMPL_VAR NAME=CSS><TMPL_ELSE>black</TMPL_IF>.css"/>
        <link rel="icon" type="image/ico" href="/favicon.ico"/>
        <script type="text/javascript" src="/raid.js"></script>
+       <script type="text/javascript" src="/misc.js"></script>
        <TMPL_VAR NAME=HEADER>
 </head>
 <body>