--- loncom/interface/selfenroll.pm 2008/07/11 13:43:53 1.9
+++ loncom/interface/selfenroll.pm 2008/07/14 10:25:25 1.11
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Allow users to self-enroll in a course
#
-# $Id: selfenroll.pm,v 1.9 2008/07/11 13:43:53 raeburn Exp $
+# $Id: selfenroll.pm,v 1.11 2008/07/14 10:25:25 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -33,6 +33,7 @@ use Apache::Constants qw(:common);
use Apache::lonnet;
use Apache::loncommon;
use Apache::lonlocal;
+use Apache::createaccount;
use LONCAPA qw(:DEFAULT :match);
sub handler {
@@ -44,6 +45,7 @@ sub handler {
}
my $handle = &Apache::lonnet::check_for_valid_session($r);
my $lonidsdir=$r->dir_config('lonIDsDir');
+ my $lonhost = $r->dir_config('lonHostID');
if ($handle ne '') {
&Apache::lonnet::transfer_profile_to_env($lonidsdir,$handle);
}
@@ -51,28 +53,32 @@ sub handler {
&Apache::lonlocal::get_language_handle($r);
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},['cid']);
my ($coursechk,$cid) = &validate_course_id($env{'form.cid'});
- my $start_page =
- &Apache::loncommon::start_page('Self-enroll in a LON-CAPA course','',
- {'no_inline_link' => 1,});
- $r->print($start_page);
- &Apache::lonhtmlcommon::clear_breadcrumbs();
- &Apache::lonhtmlcommon::add_breadcrumb
- ({href=>"/adm/selfenroll?cid=$cid",
- text=>"Self-enroll"});
- $r->print(&Apache::lonhtmlcommon::breadcrumbs('Self-enroll in course'));
if ($coursechk ne 'ok') {
+ &page_header($r,$cid);
$r->print('
'.&mt('Self-enrollment error').'
'.
- ''.&mt('Invalid domain or course number').'');
+ ''.
+ &mt('Invalid domain or course number').'');
$r->print(&Apache::loncommon::end_page());
return OK;
}
- my ($cdom,$cnum,$canenroll,$selfenroll_types,$selfenroll_registered,
+ my $now = time;
+ my $js;
+ if ($env{'form.phase'} eq 'login') {
+ $js = &Apache::createaccount::javascript_setforms($now);
+ }
+ &page_header($r,$cid,$js);
+ my $include = $r->dir_config('lonIncludes');
+ if ($env{'form.phase'} eq 'login') {
+ my $jsh=Apache::File->new($include."/londes.js");
+ $r->print(<$jsh>);
+ }
+ my ($cdom,$cnum,$desc,$canenroll,$selfenroll_types,$selfenroll_registered,
@cancreate,$knownuser,$selfenroll_access_start,$selfenroll_access_end,
$selfenroll_section,$selfenroll_future,%curr_role,%coursehash,$cdomdesc);
- my $now = time;
%coursehash = &Apache::lonnet::coursedescription($cid);
$cdom = $coursehash{'domain'};
$cnum = $coursehash{'num'};
+ $desc = $coursehash{'description'};
$selfenroll_types = $coursehash{'internal.selfenroll_types'};
$selfenroll_registered = $coursehash{'internal.selfenroll_registered'};
$selfenroll_section = $coursehash{'internal.selfenroll_section'};
@@ -173,7 +179,7 @@ sub handler {
if ($sso_url eq '') {
$sso_url = $login_path;
}
- my $missing_formitem = &mt('The link to the requested page could not be followed.')."\\n".&mt('The placeholder for the courseID is absent.');
+ $missing_formitem = &mt('The link to the requested page could not be followed.')."\\n".&mt('The placeholder for the courseID is absent.');
if ($knownuser) {
if (keys(%curr_role)) {
$r->print(''.&mt('Self-enrollment unavailable').'
'.
@@ -184,11 +190,22 @@ sub handler {
&process_self_enroll($r,$cdom,$cnum,$selfenroll_types,$selfenroll_registered,
$selfenroll_access_start,$selfenroll_access_end,
$selfenroll_section,$now);
+ } elsif ($env{'form.phase'} eq 'login') {
+ my $submit_text = &mt('Log in');
+ $r->print(''.&mt('Log-in to LON-CAPA').'
');
+ my $udom = &Apache::lonnet::default_login_domain();
+ $r->print(&Apache::createaccount::login_box($now,$lonhost,$cid,
+ $submit_text,$udom,'selfenroll'));
+ $r->print(&mt('You will be able to self-enroll in the course you selected ([_1]) after you have successfully logged in.',''.$desc.'').
+ &Apache::loncommon::end_page());
+ return OK;
} elsif (@cancreate > 0) {
$r->print(<
function setPath(formaction,item,arg) {
- document.forms.logmein.action = formaction;
+ if (formaction != '') {
+ document.forms.logmein.action = formaction;
+ }
var itemid = getIndexByName("setting");
if (itemid > -1) {
document.logmein.elements[itemid].name = item;
@@ -211,7 +228,7 @@ function getIndexByName(item) {
END
$r->print(''.&mt('LON-CAPA account required').'
'.
- &mt('You need to be logged into LON-CAPA to self-enroll in a course.').'- '.&mt('If you have an account in LON-CAPA, [_1]log-in[_2].','','').'
');
+ &mt('You need to be logged into LON-CAPA to self-enroll in a course.').'- '.&mt('If you have an account in LON-CAPA, [_1]log-in[_2].','','').'
');
if (@cancreate > 1) {
$r->print('- '.&mt('Otherwise:').'
');
my $count = 0;
@@ -261,12 +278,27 @@ END
$r->print(&mt('Submit a request to the LON-CAPA [_1]helpdesk[_2] for [_3] if you require assistance.','','',$cdomdesc));
}
$r->print(''."\n".
&Apache::loncommon::end_page());
return OK;
}
+sub page_header {
+ my ($r,$cid,$js) = @_;
+ my $start_page =
+ &Apache::loncommon::start_page('Self-enroll in a LON-CAPA course',$js,
+ {'no_inline_link' => 1,});
+ $r->print($start_page);
+ &Apache::lonhtmlcommon::clear_breadcrumbs();
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>"/adm/selfenroll?cid=$cid",
+ text=>"Self-enroll"});
+ $r->print(&Apache::lonhtmlcommon::breadcrumbs('Self-enroll in course'));
+ return;
+}
+
sub validate_course_id {
my ($cid) = @_;
my ($cdom,$cnum) = ($env{'form.cid'} =~ /^($match_domain)_($match_courseid)$/);