[prev] [thread] [next] [lurker] [Date index for 2003/11/26]
Author: gabor
Date: 2003-11-26 15:40:05 +0200 (Wed, 26 Nov 2003)
New Revision: 63
Modified:
README
lib/YAPC/Organizer.pm
t/07-web-change-data.t
t/lib/YAPC/Test/Data.pm
templates/message.tmpl
templates/personal_info.tmpl
templates/user_account.tmpl
Log:
logged in people can now change their personal information
Modified: README
===================================================================
--- README 2003-11-26 13:35:25 UTC (rev 62)
+++ README 2003-11-26 13:40:05 UTC (rev 63)
@@ -54,7 +54,7 @@
CHANGES
---------
0.08_01 2003.11.
- -
+ - logged in users can change their personal information
0.08 2003.11.25
@@ -212,6 +212,10 @@
- separate the code (with simple templates) and the templates needed for
YAPC::Israel::2004. Put the former in the distribution, move the
latter to manual change and upload.
+ This will also bear the advantage that we don't have to deal with the
+ question, where to put the image files and the css files as the simple
+ template version will not have any.
+
- indicate on the navigation bar who is logged in
Modified: lib/YAPC/Organizer.pm
===================================================================
--- lib/YAPC/Organizer.pm 2003-11-26 13:35:25 UTC (rev 62)
+++ lib/YAPC/Organizer.pm 2003-11-26 13:40:05 UTC (rev 63)
@@ -569,7 +569,43 @@
}
+sub personal_info {
+ my $self = shift;
+ my $q = $self->query;
+ my $id = $self->is_logged_in;
+ my ($person) = YAPC::Person->search(id => $id);
+
+ my @fields = qw(fname lname phone company country state city street zip pauseid url mongers bio);
+
+ my $t = $self->_server_page('personal_info');
+ if (not $q->param('submit')) {
+ foreach my $field (@fields) {
+ my $v = $person->get($field) or next;
+ $t->param($field => $v)
+ }
+ return $t->output;
+ }
+
+ # are the password good and equal ?
+ my %args;
+ foreach my $f (@fields) {
+ $args{$f} = $q->param($f) || '';
+ }
+
+ if ($args{fname} and $args{lname} and $args{phone} ){
+ $person->set($_ => $args{$_}) foreach @fields;
+ $person->update;
+
+ my $t = $self->_server_page('message');
+ $t->param(personal_info_changed => 1);
+ return $t->output;
+ } else {
+ $t->param(message => "Error");
+ return $t->output;
+ }
+}
+
1;
Modified: t/07-web-change-data.t
===================================================================
--- t/07-web-change-data.t 2003-11-26 13:35:25 UTC (rev 62)
+++ t/07-web-change-data.t 2003-11-26 13:40:05 UTC (rev 63)
@@ -39,3 +39,108 @@
isnt($cookies[1], $cookies[2], 'cookies are different');
+# access the change personal_info page fails if not authenticated
+{
+ local $ENV{REQUEST_URI} = '/personal_info.html';
+ #local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+ my $q = CGI->new();
+ my $webapp = YAPC::Organizer->new;
+ $webapp->query($q);
+ my $result = $webapp->run();
+ like($result, qr@<h2>Login</h2>@, 'Redirected to login page');
+}
+
+# update personal_information fails if not authenticated
+{
+ local $ENV{REQUEST_URI} = '/personal_info.html';
+ #local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+ my $q = CGI->new();
+ my $webapp = YAPC::Organizer->new;
+ $webapp->query($q);
+ my $result = $webapp->run();
+ like($result, qr@<h2>Login</h2>@, 'Redirected to login page');
+}
+
+# access to personl_info page is successful when authenticated
+{
+ local $ENV{REQUEST_URI} = '/personal_info.html';
+ local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+ my $q = CGI->new();
+ my $webapp = YAPC::Organizer->new;
+ $webapp->query($q);
+ my $result = $webapp->run();
+ like($result, qr@<h2>Change Personal Information</h2>@, 'personal_info page accessed');
+ like($result, qr@\Q<tr><td>First Name:</td><td><input size=40 name="fname" value="$people[0]{fname}" /> *</td></tr>@, 'old fname filled in correclty');
+ like($result, qr@\Q<tr><td>Last Name:</td><td><input size=40 name="lname" value="$people[0]{lname}" /> *</td></tr>@, 'old lname filled in correclty');
+ like($result, qr@\Q<tr><td>Phone:</td><td><input size=40 name="phone" value="$people[0]{phone}" /> *</td></tr>@, 'old phone filled in correclty');
+ like($result, qr@\Q<tr><td>Company:</td><td><input size=40 name="company" value="" /></td></tr>@, 'old company filled in correclty');
+ # $people[0]{company}
+}
+
+
+# submit change to personl_info page when not authenticated
+# no value submitted:
+{
+ local $ENV{REQUEST_URI} = '/personal_info.html';
+# local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+ my $q = CGI->new({submit => 1});
+ my $webapp = YAPC::Organizer->new;
+ $webapp->query($q);
+ my $result = $webapp->run();
+ like($result, qr@<h2>Login</h2>@, 'Redirected to login page');
+}
+
+
+# like($result, qr@<h2>Change Personal Information</h2>@, 'personal_info page accessed');
+
+# submit change to personl_info page gives error when authenticated but not enough data provided.
+{
+ local $ENV{REQUEST_URI} = '/personal_info.html';
+ local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+ my $q = CGI->new({submit => 1});
+ my $webapp = YAPC::Organizer->new;
+ $webapp->query($q);
+ my $result = $webapp->run();
+ like($result, qr@Error@, 'Error');
+ like($result, qr@<h2>Change Personal Information</h2>@, 'personal_info page accessed');
+ like($result, qr@\Q<tr><td>First Name:</td><td><input size=40 name="fname" value="" /> *</td></tr>@, 'old fname filled in correclty');
+ like($result, qr@\Q<tr><td>Last Name:</td><td><input size=40 name="lname" value="" /> *</td></tr>@, 'old lname filled in correclty');
+ like($result, qr@\Q<tr><td>Phone:</td><td><input size=40 name="phone" value="" /> *</td></tr>@, 'old phone filled in correclty');
+ like($result, qr@\Q<tr><td>Company:</td><td><input size=40 name="company" value="" /></td></tr>@, 'old company filled in correclty');
+}
+{
+ local $ENV{REQUEST_URI} = '/personal_info.html';
+ local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+ my $q = CGI->new({submit => 1, fname => $people[3]{fname}, lname => $people[3]{lname}, company=>$people[3]{company}});
+ my $webapp = YAPC::Organizer->new;
+ $webapp->query($q);
+ my $result = $webapp->run();
+ like($result, qr@Error@, 'Error');
+ like($result, qr@<h2>Change Personal Information</h2>@, 'personal_info page accessed');
+ like($result, qr@\Q<tr><td>First Name:</td><td><input size=40 name="fname" value="$people[3]{fname}" /> *</td></tr>@, 'old fname filled in correclty');
+ like($result, qr@\Q<tr><td>Last Name:</td><td><input size=40 name="lname" value="$people[3]{lname}" /> *</td></tr>@, 'old lname filled in correclty');
+ like($result, qr@\Q<tr><td>Phone:</td><td><input size=40 name="phone" value="" /> *</td></tr>@, 'old phone filled in correclty');
+ like($result, qr@\Q<tr><td>Company:</td><td><input size=40 name="company" value="$people[3]{company}" /></td></tr>@, 'old company filled in correclty');
+}
+
+##### submitted data gets updated in the database
+{
+ local $ENV{REQUEST_URI} = '/personal_info.html';
+ local $ENV{HTTP_COOKIE} = "Yapcom=$cookies[0]";
+ my $q = CGI->new({submit => 1, fname => $people[3]{fname}, lname => $people[3]{lname}, phone => $people[3]{phone}, company=>$people[3]{company}});
+ my $webapp = YAPC::Organizer->new;
+ $webapp->query($q);
+ my $result = $webapp->run();
+ like($result, qr@Your personal information has been successfully updated.@, 'updated');
+
+ # check data in database
+ my ($p) = YAPC::Person->search(email => $people[0]->{email}); # we did not change the e-mail so it is still the same e-mail address
+ is($p->get('fname'), $people[3]{fname}, 'fname was updated correctly');
+}
+
+
+
+
+
+
+
Modified: t/lib/YAPC/Test/Data.pm
===================================================================
--- t/lib/YAPC/Test/Data.pm 2003-11-26 13:35:25 UTC (rev 62)
+++ t/lib/YAPC/Test/Data.pm 2003-11-26 13:40:05 UTC (rev 63)
@@ -31,6 +31,16 @@
password => 'nopassword',
password2 => 'nopassword',
},
+ {
+ fname => 'asldhsaldj',
+ lname => 'skdh asda 8dl',
+ email => 'aksdahsdk@xxxxxxxx.xxxxxxxxxxxx.xxx',
+ phone => 'aduaofuo la8',
+ company => 'aklsjd asdoi934285wefl @$@#',
+ password => 'wertyu',
+ password2 => 'wertyu',
+ },
+
);
our @talks = (
Modified: templates/message.tmpl
===================================================================
--- templates/message.tmpl 2003-11-26 13:35:25 UTC (rev 62)
+++ templates/message.tmpl 2003-11-26 13:40:05 UTC (rev 63)
@@ -9,7 +9,11 @@
<TMPL_IF NAME="admins_only">
Access to administrators only
</TMPL_IF>
+<TMPL_IF NAME="personal_info_changed">
+Your personal information has been successfully updated.
+</TMPL_IF>
+
<br /> <br /><br /> <br /><br /> <br /><br /> <br /><br /> <br />
<hr />
Modified: templates/personal_info.tmpl
===================================================================
--- templates/personal_info.tmpl 2003-11-26 13:35:25 UTC (rev 62)
+++ templates/personal_info.tmpl 2003-11-26 13:40:05 UTC (rev 63)
@@ -1,39 +1,33 @@
-<TMPL_VALUE NAME="title" VALUE="Registration Form">
-<TMPL_INCLUDE NAME="header.tmpl">
- <td valign="top">
-
-Registration to the second Perl conference in Israel is open.<br>
-Payment is not yet required at this moment.<br>
-We'll update you by-email when the payments can be made.
-<p>
-<font color="red"><TMPL_VAR NAME="MESSAGE"></font>
-<p>
-<form method="post">
-<input type="hidden" name="submit" value="Register">
-<table>
-<tr><td>First Name:</td><td><input size=40 name="fname" value="<TMPL_VAR NAME=fname>" /> *</td></tr>
-<tr><td>Last Name:</td><td><input size=40 name="lname" value="<TMPL_VAR NAME=lname>" /> *</td></tr>
-<tr><td>Email:</td><td><input size=40 name="email" value="<TMPL_VAR NAME=email>" /> *</td></tr>
-<tr><td>Phone:</td><td><input size=40 name="phone" value="<TMPL_VAR NAME=phone>" /> *</td></tr>
-<tr><td>Password:</td><td><input size=40 name="password" type="password" /> *</td></tr>
-<tr><td>Retype Password:</td><td><input size=40 name="password2" type="password" /> *</td></tr>
-<tr><td>Company:</td><td><input size=40 name="company" value="<TMPL_VAR NAME=company>" /></td></tr>
-<tr><td>PAUSE ID:</td><td><input size=40 name="pauseid" value="<TMPL_VAR NAME=pauseid>" /></td></tr>
-<tr><td>Home page:</td><td><input size=40 name="url" value="<TMPL_VAR NAME=url>" /></td></tr>
-<tr><td>Mongers Group:</td><td><input size=40 name="mongers" value="<TMPL_VAR NAME=mongers>" /></td></tr>
-<tr><td>Bio:</td><td><textarea cols=40 rows=10 name="bio"><TMPL_VAR NAME=bio></textarea></td></tr>
-<tr><td></td><td><input type="submit" name="submitbtn" value="Register"></td></tr>
-</table>
-</form>
-
- <br /> <br /><br /> <br /><br /> <br /><br /> <br /><br /> <br />
- <hr />
-
- <p class="bottomtext">
- Please send comments, questions etc. to
- <a href="mailto:yapc-organizers@xxxx.xxx.xx">yapc-organizers@xxxx.xxx.xx</a>
- </p>
-
- </td>
-<TMPL_INCLUDE NAME="footer.tmpl">
-
+<TMPL_VALUE NAME="title" VALUE="Change Personal Information">
+<TMPL_INCLUDE NAME="header.tmpl">
+ <td valign="top">
+
+<p>
+<font color="red"><TMPL_VAR NAME="MESSAGE"></font>
+<p>
+<form method="post">
+<input type="hidden" name="submit" value="Register">
+<table>
+<tr><td>First Name:</td><td><input size=40 name="fname" value="<TMPL_VAR NAME=fname>" /> *</td></tr>
+<tr><td>Last Name:</td><td><input size=40 name="lname" value="<TMPL_VAR NAME=lname>" /> *</td></tr>
+<tr><td>Phone:</td><td><input size=40 name="phone" value="<TMPL_VAR NAME=phone>" /> *</td></tr>
+<tr><td>Company:</td><td><input size=40 name="company" value="<TMPL_VAR NAME=company>" /></td></tr>
+<tr><td>PAUSE ID:</td><td><input size=40 name="pauseid" value="<TMPL_VAR NAME=pauseid>" /></td></tr>
+<tr><td>Home page:</td><td><input size=40 name="url" value="<TMPL_VAR NAME=url>" /></td></tr>
+<tr><td>Mongers Group:</td><td><input size=40 name="mongers" value="<TMPL_VAR NAME=mongers>" /></td></tr>
+<tr><td>Bio:</td><td><textarea cols=40 rows=10 name="bio"><TMPL_VAR NAME=bio></textarea></td></tr>
+<tr><td></td><td><input type="submit" name="submitbtn" value="Register"></td></tr>
+</table>
+</form>
+
+ <br /> <br /><br /> <br /><br /> <br /><br /> <br /><br /> <br />
+ <hr />
+
+ <p class="bottomtext">
+ Please send comments, questions etc. to
+ <a href="mailto:yapc-organizers@xxxx.xxx.xx">yapc-organizers@xxxx.xxx.xx</a>
+ </p>
+
+ </td>
+<TMPL_INCLUDE NAME="footer.tmpl">
+
Modified: templates/user_account.tmpl
===================================================================
--- templates/user_account.tmpl 2003-11-26 13:35:25 UTC (rev 62)
+++ templates/user_account.tmpl 2003-11-26 13:40:05 UTC (rev 63)
@@ -6,6 +6,7 @@
<p>
<a href=proposal.html>Submit a proposal</a><br>
<a href=change_password.html>Change password</a><br>
+<a href=personal_info.html>Change personal information</a><br>
<a href=logout.html>Logout</a><br>
<br /> <br /><br /> <br /><br /> <br /><br /> <br /><br /> <br />
Generated at 17:06 on 26 Nov 2003 by mariachi 0.51