--- loncom/interface/lonmanagekeys.pm 2003/04/22 21:00:42 1.2 +++ loncom/interface/lonmanagekeys.pm 2003/05/01 02:12:43 1.6 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Handler to manage course access keys # -# $Id: lonmanagekeys.pm,v 1.2 2003/04/22 21:00:42 www Exp $ +# $Id: lonmanagekeys.pm,v 1.6 2003/05/01 02:12:43 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -54,7 +54,18 @@ ENDHEAD # =================================================== Show student list to drop sub show_key_list { - my ($r,$mode,$linkto,$action,$statusmode,$classlist,$keylist)=@_; + my ($r,$comment,%cenv)=@_; + + my %accesskeys=&Apache::lonnet::dump + ('accesskeys',$cenv{'domain'},$cenv{'num'}); + foreach (keys %accesskeys) { + $r->print($_.' '.$accesskeys{$_}.'
'); + } + return ''; +# +# Junk below +# + my ($mode,$linkto,$action,$statusmode,$classlist,$keylist); # # Just junk so that this compiles # @@ -122,14 +133,33 @@ sub togglekeyaccess { my %cenv=@_; unless ($cenv{'domain'}) { return; } if ($cenv{'keyaccess'} eq 'yes') { + return 'Removing key access: '. &Apache::lonnet::del('environment',['keyaccess'], $cenv{'domain'},$cenv{'num'}); } else { + return 'Establishing key access: '. &Apache::lonnet::put('environment',{'keyaccess' => 'yes'}, $cenv{'domain'},$cenv{'num'}); } } +# --------------------------------------------------------------- Generate Keys + +sub genkeys { + my ($num,$comments,%cenv)=@_; + unless ($comments) { $comments=''; } + $comments=~s/\#/ /g; + $comments=~s/\;/ /g; + unless ($num) { return 'No number of keys given.'; } + unless (($num=~/^\d+$/) && ($num>0)) { + return 'Invalid number of keys given.'; + } + my $batchnumber='BATCH_'.time().'_'.$$; + return 'Generated '.&Apache::lonnet::generate_access_keys + ($num,$cenv{'domain'},$cenv{'num'},$batchnumber.'; '.$comments).' of '. + $num.' access keys (Batch Number: '.$batchnumber.')',$batchnumber; +} + ################################################################### ################################################################### sub handler { @@ -151,37 +181,56 @@ sub handler { return HTTP_NOT_ACCEPTABLE; } if ($ENV{'form.cid'}) { - # - # Only output the header information if they did not request csv format - # + my %cenv=&Apache::lonnet::coursedescription($ENV{'form.cid'}); if (exists($ENV{'form.state'}) && ($ENV{'form.state'} eq 'csv')) { +# +# CSV Output +# $r->content_type('text/csv'); +# +# Do CSV +# } else { - # Start page +# +# Normal web stuff +# $r->content_type('text/html'); $r->send_http_header; $r->print(&header()); - } - $r->print(''); - my %cenv=&Apache::lonnet::coursedescription($ENV{'form.cid'}); - if ($ENV{'form.toggle'}) { - &togglekeyaccess(%cenv); - %cenv=&Apache::lonnet::coursedescription($ENV{'form.cid'}); - } - if ($cenv{'keyaccess'} eq 'yes') { - $r->print('Access to this course is key controlled. ') - } else { - $r->print('Access to this course is open, no access keys. '); - } - $r->print('
'); -# -# do stuff here. -# - if (exists($ENV{'form.state'}) && ($ENV{'form.state'} eq 'csv')) { - $r->print("\n"); - } else { + $r->print( + ''); +# --- Actions + if ($ENV{'form.toggle'}) { + $r->print(&togglekeyaccess(%cenv).'
'); + %cenv=&Apache::lonnet::coursedescription($ENV{'form.cid'}); + } + my $batchnumber=''; + if ($ENV{'form.genkeys'}) { + (my $msg,$batchnumber)= + &genkeys($ENV{'form.num'},$ENV{'form.comments'},%cenv); + $r->print($msg.'
'); + } + if ($ENV{'form.listkeys'}) { + &show_key_list($r,$ENV{'form.listcom'},%cenv); + } +# --- Menu + $r->print('

Key Access

'); + if ($cenv{'keyaccess'} eq 'yes') { + $r->print('Access to this course is key controlled.
') + } else { + $r->print('Access to this course is open, no access keys.
'); + } + $r->print(<

Generate New Keys

+Number of keys to be generated:
+Comments/Remarks/Notes:
+ +

List Keys

+Comments/Remarks/Notes/Batch Number: +
+ +ENDKEYMENU $r->print(''); } } else {