]> Dogcows Code - chaz/p5-CGI-Ex/blobdiff - samples/cgi_ex_2.cgi
CGI::Ex 2.00
[chaz/p5-CGI-Ex] / samples / cgi_ex_2.cgi
diff --git a/samples/cgi_ex_2.cgi b/samples/cgi_ex_2.cgi
new file mode 100755 (executable)
index 0000000..114b4da
--- /dev/null
@@ -0,0 +1,150 @@
+#!/usr/bin/perl -w
+
+=head1 NAME
+
+cgi_ex_2.cgi - Rewrite of cgi_ex_1.cgi using CGI::Ex::App
+
+=cut
+
+if (__FILE__ eq $0) {
+  handler();
+}
+
+sub handler {
+  MyCGI->navigate;
+}
+
+###----------------------------------------------------------------###
+
+package MyCGI;
+
+use strict;
+use base CGI::Ex::App;
+use CGI::Ex::Dump qw(debug);
+
+sub pre_loop {
+  my $self = shift;
+  my $path = shift;
+  if ($#$path == -1) {
+    push @$path, 'userinfo';
+  }
+}
+
+### this will work for both userinfo_hash_common and success_hash_common
+sub hash_common {
+  my $self = shift;
+  return {
+    title   => 'My Application',
+    script  => $ENV{SCRIPT_NAME},
+    color   => ['#ccf', '#aaf'],
+    history => $self->history,
+  }
+}
+
+sub ready_validate {
+  my $self = shift;
+  return $self->form->{processing} ? 1 : 0;
+}
+
+###----------------------------------------------------------------###
+
+sub userinfo_hash_validation {
+  return {
+    'group order' => ['username', 'password'],
+    username => {
+      required => 1,
+      min_len  => 3,
+      max_len  => 30,
+      match    => 'm/^\w+$/',
+      # could probably all be done with match => 'm/^\w{3,30}$/'
+    },
+    password => {
+      required => 1,
+      max_len  => 20,
+    },
+    password_verify => {
+      validate_if => 'password',
+      equals      => 'password',
+    },
+  };
+}
+
+sub userinfo_hash_swap {
+  my $self = shift;
+  my $hash = $self->form;
+  $hash->{form_name} = 'formfoo';
+  $hash->{js_val}    = $self->vob->generate_js($self->userinfo_hash_validation(),
+                                               $hash->{form_name},
+                                               "$ENV{SCRIPT_NAME}/js");
+  return $hash;
+}
+
+###----------------------------------------------------------------###
+
+sub userinfo_file_print {
+  return \ qq {
+    <html>
+    <head>
+      <title>[% title %]</title>
+      <style>
+      .error {
+        display: block;
+        color: red;
+        font-weight: bold;
+      }
+      </style>
+    </head>
+    <body>
+    <h1 style='color:blue'>Please Enter information</h1>
+    <span style='color:red'>[% error_header %]</span>
+    <br>
+
+    <form name="[% form_name %]">
+    <input type=hidden name=processing value=1>
+
+    <table>
+    <tr bgcolor=[% color.0 %]>
+      <td>Username:</td>
+      <td>
+        <input type=text size=30 name=username>
+        <span class=error id=username_error>[% username_error %]</span></td>
+    </tr>
+    <tr bgcolor=[% color.1 %]>
+      <td>Password:</td>
+      <td><input type=password size=20 name=password>
+        <span class=error id=password_error>[% password_error %]</span></td>
+    </tr>
+    <tr bgcolor=[% color.0 %]>
+      <td>Password Verify:</td>
+      <td><input type=password size=20 name=password_verify>
+        <span class=error id=password_verify_error>[% password_verify_error %]</span></td>
+    </tr>
+    <tr bgcolor=[% color.1 %]>
+      <td colspan=2 align=right><input type=submit value=Submit></td>
+    </tr>
+
+    </table>
+
+    </form>
+
+    [% js_validation %]
+    </body>
+    </html>
+  };
+}
+
+sub success_file_print {
+  return \ qq{
+    <html>
+    <head><title>[% title %]</title></head>
+    <body>
+    <h1 style='color:green'>Success</h1>
+    <br>
+    print "I can now continue on with the rest of my script!";
+    </body>
+    </html>
+  };
+}
+
+
+1;
This page took 0.022273 seconds and 4 git commands to generate.