Add user list and user pages
authorMarius Gavrilescu <marius@ieval.ro>
Fri, 17 Jan 2014 08:32:52 +0000 (10:32 +0200)
committerMarius Gavrilescu <marius@ieval.ro>
Fri, 17 Jan 2014 08:32:52 +0000 (10:32 +0200)
gruntmaster-genallpages
lib/Gruntmaster/Data.pm
lib/Gruntmaster/Page.pm
lib/Gruntmaster/Page/Ct.pm
lib/Gruntmaster/Page/Us.pm [new file with mode: 0644]
lib/Gruntmaster/Page/Us/Entry.pm [new file with mode: 0644]

index d26c02d64fac6b87fae4519b4f803d994f2ee124..efa61fb18cd87fdfeab93084222fcddeb64584b7 100755 (executable)
@@ -3,7 +3,7 @@ use v5.14;
 
 use Gruntmaster::Page;
 use Gruntmaster::Page::Log;
-use Gruntmaster::Data qw/contests jobcard problems/;
+use Gruntmaster::Data qw/contests jobcard problems users/;
 
 sub generate{
   my $what = shift;
@@ -13,10 +13,14 @@ sub generate{
 
 generate "index.html";
 generate "learn.html";
+
 generate "ct/index.html";
 generate "ct/$_/index.thml" for contests;
 generate "ct/$_/log/st.html" for contests;
 
+generate "us/index.html";
+generate "us/$_.html" for users;
+
 for my $ct (undef, contests) {
        local $Gruntmaster::Data::contests = $ct;
        my $ctp = defined $ct ? "ct/$ct/" : '';
index 2f8a18470a1965c0e154dfad1c5de4cce0c1bbda..94eb507d8b0d59db7b67298bdbfb9e2180230b3e 100644 (file)
@@ -33,6 +33,7 @@ sub rexec                             ()              { EXEC }
 
 sub problems                   ()              { SMEMBERS cp . 'problem' }
 sub contests                   ()              { SMEMBERS cp . 'contest' }
+sub users                              ()              { SMEMBERS cp . 'user' }
 sub jobcard                            ()              { GET cp . 'job' }
 
 sub job_results                        (_)             { decode_json HGET cp . "job.$_[0]", 'results' }
@@ -71,7 +72,7 @@ sub defhash{
 defhash problem => qw/name level statement/;
 defhash contest => qw/start end name owner/;
 defhash job => qw/date extension filesize private problem result result_text user/;
-defhash user => qw/name email town university/;
+defhash user => qw/name email town university level/;
 
 sub clean_job (_){
        HDEL cp . "job.$_[0]", qw/result result_text results daemon/
index 953d8ae4ab6d78c181d558cff9de3884762f4901..d90d57c71a2aa3b5fd9603f4ce19f9d15063afdd 100644 (file)
@@ -37,6 +37,8 @@ sub declaregen{
        declaregen Index                        => qr,^index$,;
        declaregen Learn                        => qr,^learn$,;
        declaregen Account                      => qr,^account$,;
+       declaregen Us                           => qr,^us/index$,;
+       declaregen 'Us::Entry'          => qr,^us/$component$,;
        declaregen Ct                           => qr,^ct/index$,;
        declaregen 'Ct::Entry'          => qr,^ct/$component/index$,;
        declaregen St                           => qr,^ct/$component/log/st$,;
index 8ef38155306fe9b42ec55e92089b04a6a5282086..1c108fddf5162f534ede875c41128c6e89c3d69d 100644 (file)
@@ -10,7 +10,7 @@ our $VERSION = '0.001';
 use HTML::Template::Compiled;
 use POSIX qw/strftime/;
 use Gruntmaster::Page::Common qw/cook_templates reload_templates/;
-use Gruntmaster::Data qw/contest_name contest_start contest_end contest_owner/;
+use Gruntmaster::Data qw/contests contest_name contest_start contest_end contest_owner/;
 
 my %orig_templates = (
        en => <<'HTML',
@@ -61,7 +61,7 @@ HTML
 my %templates = cook_templates %orig_templates, ct => 'Contests';
 
 sub generate{
-       %templates = cook_templates %orig_templates, ct => 'Contests' if reload_template;
+       %templates = cook_templates %orig_templates, ct => 'Contests' if reload_templates;
        my $htc = HTML::Template::Compiled->new(scalarref => \$templates{$_[1]});
 
        my (@running, @pending, @finished);
diff --git a/lib/Gruntmaster/Page/Us.pm b/lib/Gruntmaster/Page/Us.pm
new file mode 100644 (file)
index 0000000..2c87916
--- /dev/null
@@ -0,0 +1,31 @@
+package Gruntmaster::Page::Us;
+
+use 5.014000;
+use strict;
+use warnings;
+use parent qw/Exporter/;
+our @EXPORT_OK = qw/generate/;
+our $VERSION = '0.001';
+
+use HTML::Template::Compiled;
+use Gruntmaster::Data qw/users user_name/;
+use Gruntmaster::Page::Common qw/cook_templates reload_templates/;
+
+my %orig_templates = (
+       en => <<'HTML',
+<ul><tmpl_loop users><li><a href="<tmpl_var id>.var"><tmpl_var name></a>
+</tmpl_loop></ul>
+HTML
+);
+
+my %templates = cook_templates %orig_templates, us => 'Users';
+
+sub generate{
+       %templates = cook_templates %orig_templates, us => 'Users' if reload_templates;
+       my $htc = HTML::Template::Compiled->new(scalarref => \$templates{$_[1]});
+
+       $htc->param(users => [ map { {id => $_, name => user_name} } users ]);
+       $htc->output;
+}
+
+1
diff --git a/lib/Gruntmaster/Page/Us/Entry.pm b/lib/Gruntmaster/Page/Us/Entry.pm
new file mode 100644 (file)
index 0000000..5d493ba
--- /dev/null
@@ -0,0 +1,38 @@
+package Gruntmaster::Page::Us::Entry;
+
+use 5.014000;
+use strict;
+use warnings;
+use parent qw/Exporter/;
+our @EXPORT_OK = qw/generate/;
+our $VERSION = '0.001';
+
+use HTML::Template::Compiled;
+use Gruntmaster::Data qw/users user_name user_town user_university user_level/;
+use Gruntmaster::Page::Common qw/cook_templates reload_templates/;
+
+my %orig_templates = (
+       en => <<'HTML',
+<h1><tmpl_var name></h1>
+Town: <tmpl_var town><br>
+University: <tmpl_var university><br>
+Level: <tmpl_var level>
+HTML
+);
+
+my %templates = cook_templates %orig_templates, us_entry => '<tmpl_var name>';
+
+sub generate{
+       %templates = cook_templates %orig_templates, us_entry => '<tmpl_var name>' if reload_templates;
+       $_[0] =~ m,^us/([^/]+)\.html$,;
+       local $_ = $1;
+       my $htc = HTML::Template::Compiled->new(scalarref => \$templates{$_[1]});
+
+       $htc->param(name => user_name);
+       $htc->param(town => user_town);
+       $htc->param(university => user_university);
+       $htc->param(level => user_level);
+       $htc->output;
+}
+
+1
This page took 0.015708 seconds and 4 git commands to generate.