INSERT INTO roles VALUES('intel_members');
INSERT INTO roles VALUES('intel_member');
INSERT INTO roles VALUES('intel_naps');
+INSERT INTO roles VALUES('textexport_alliance');
INSERT INTO group_roles (gid,role) VALUES(2,'member_menu');
INSERT INTO group_roles (gid,role) VALUES(2,'attack_menu');
INSERT INTO group_roles (gid,role) VALUES(1,'intel_members');
INSERT INTO group_roles (gid,role) VALUES(1,'intel_member');
INSERT INTO group_roles (gid,role) VALUES(1,'intel_naps');
+INSERT INTO group_roles (gid,role) VALUES(1,'textexport_alliance');
INSERT INTO group_roles (gid,role) VALUES(3,'dc_menu');
INSERT INTO group_roles (gid,role) VALUES(3,'bc_menu');
INSERT INTO group_roles (gid,role) VALUES(3,'intel_members');
INSERT INTO group_roles (gid,role) VALUES(3,'intel_member');
INSERT INTO group_roles (gid,role) VALUES(3,'intel_naps');
+INSERT INTO group_roles (gid,role) VALUES(3,'textexport_alliance');
__PACKAGE__->deny_access_unless('/forum/allUnread',[qw//]);
__PACKAGE__->deny_access_unless('/forum/privmsg',[qw//]);
__PACKAGE__->deny_access_unless('/settings',[qw//]);
+__PACKAGE__->deny_access_unless('/textexport/alliance',[qw/textexport_alliance/]);
=head1 NAME
--- /dev/null
+package NDWeb::Controller::TextExport;
+
+use strict;
+use warnings;
+use parent 'Catalyst::Controller';
+
+=head1 NAME
+
+NDWeb::Controller::TextExport - Catalyst Controller
+
+=head1 DESCRIPTION
+
+Catalyst Controller.
+
+=head1 METHODS
+
+=cut
+
+
+=head2 index
+
+=cut
+
+sub auto : Private {
+ my ( $self, $c ) = @_;
+ $c->stash(template => 'textexport/index.tt2');
+}
+
+sub alliance : Local {
+ my ( $self, $c, $ally ) = @_;
+ my $dbh = $c->model;
+
+ my $query = $dbh->prepare(q{SELECT coords(x,y,z), size, score, value, COALESCE(nick,'') AS nick
+ FROM current_planet_stats
+ WHERE alliance_id = $1
+ ORDER BY x,y,z});
+ $query->execute($ally);
+
+ $c->stash(titles => $query->{NAME});
+ $c->stash(values => $query->fetchall_arrayref);
+}
+
+sub end : ActionClass('RenderView') {
+ my ( $self, $c ) = @_;
+ $c->res->content_type('text/plain') if $c->stash->{template} =~ m{^textexport/};
+}
+
+=head1 AUTHOR
+
+Michael Andreen (harv@ruin.nu)
+
+=head1 LICENSE
+
+GPL 2.0, or later.
+
+=cut
+
+1;
ELSIF template.name.match('jsrpc/');
debug("Passing page through xml: $template.name");
content WRAPPER site/xml.tt2;
+ELSIF template.name.match('textexport/');
+ debug("Passing page through graph: $template.name");
+ content;
ELSE;
debug("Applying HTML page layout wrappers to $template.name\n");
content WRAPPER site/html.tt2 + site/layout.tt2;
</fieldset>
</div>
</fieldset>
+<p>Export information <a href="[% c.uri_for('/textexport/alliance',a.id) %]">as text</a>.</p>
<div class="leftinfo">
<img class="graph" src="[% c.uri_for('/graphs/alliancevsintel',a.id,STICK) %]" alt="Alliance size and score vs members" height="300" width="500">
<img class="graph" src="[% c.uri_for('/graphs/avgalliancevsintel',a.id,STICK) %]" alt="Avg alliance size and score vs members" height="300" width="500">
--- /dev/null
+[% titles.join("\t") %]
+[% FOR v IN values %]
+ [%- v.join("\t") %]
+[% END %]
--- /dev/null
+use strict;
+use warnings;
+use Test::More tests => 3;
+
+BEGIN { use_ok 'Catalyst::Test', 'NDWeb' }
+BEGIN { use_ok 'NDWeb::Controller::TextExport' }
+
+ok( request('/textexport')->is_success, 'Request should succeed' );
+
+