--- loncom/auth/lonroles.pm 2013/05/23 14:56:40 1.269.2.9
+++ loncom/auth/lonroles.pm 2012/08/14 17:35:04 1.271
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# User Roles Screen
#
-# $Id: lonroles.pm,v 1.269.2.9 2013/05/23 14:56:40 raeburn Exp $
+# $Id: lonroles.pm,v 1.271 2012/08/14 17:35:04 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -138,8 +138,6 @@ use Apache::lonlocal;
use Apache::lonpageflip();
use Apache::lonnavdisplay();
use Apache::loncoursequeueadmin;
-use Apache::longroup;
-use Apache::lonrss;
use GDBM_File;
use LONCAPA qw(:DEFAULT :match);
use HTML::Entities;
@@ -151,7 +149,6 @@ sub redirect_user {
&Apache::loncommon::content_type($r,'text/html');
&Apache::loncommon::no_cache($r);
$r->send_http_header;
- my $swinfo=&Apache::lonmenu::rawconfig();
# Breadcrumbs
my $brcrum = [{'href' => $url,
@@ -166,11 +163,6 @@ sub redirect_user {
$url=~s/ /\%20/g;
$r->print(< $msg
';
+ &update_session_roles();
+ &Apache::lonnet::appenv({'user.update.time' => $now});
+ $update = $now;
+ } else {
+ $reqauthor = ''.
+ &mt('An error occurred while activating your access to authoring space');
+ }
+ } elsif ($val eq 'approval') {
+ my $domconfiguser = &Apache::lonnet::get_domainconfiguser($env{'user.domain'});
+ if (&Apache::lonnet::put('requestauthorqueue',{ $env{'user.name'}.'_'.$val => $now },
+ $env{'user.domain'},$domconfiguser) eq 'ok') {
+ my %userrequest = (
+ author => {
+ timestamp => $now,
+ status => $val,
+ },
+ author_status => $val,
+ );
+ my $req_notifylist;
+ if (ref($domconfig{'requestauthor'}) eq 'HASH') {
+ if (ref($domconfig{'requestauthor'}{'notify'}) eq 'HASH') {
+ my $req_notifylist = $domconfig{'requestauthor'}{'notify'}{'approval'};
+ if ($req_notifylist) {
+ my $fullname = &Apache::loncommon::plainname($env{'user.name'},
+ $env{'user.domain'});
+ my $sender = $env{'user.name'}.':'.$env{'user.domain'};
+ my $domdesc = &Apache::lonnet::domain($env{'user.domain'},'description');
+ &Apache::loncoursequeueadmin::send_selfserve_notification($req_notifylist,
+ "$fullname ($env{'user.name'}:$env{'user.domain'})",undef,$domdesc,
+ $now,'authorreq',$sender);
+ }
+ }
+ }
+ my $userresult =
+ &Apache::lonnet::put('requestauthor',\%userrequest,$env{'user.domain'},$env{'user.name'});
+ $reqauthor = ''.
+ &mt('Your request for authoring space has been submitted for approval.').
+ '';
+ &Apache::lonnet::appenv({'environment.requestauthorqueued' => $val.':'.$now});
+ } else {
+ $reqauthor = ''.
+ &mt('An error occurred saving your request for authoring space.').
+ '';
+ }
+ }
+ }
+ }
+ }
}
my $envkey;
my %dcroles = ();
my $numdc = &check_fordc(\%dcroles,$update,$then);
+ &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'});
my $loncaparev = $Apache::lonnet::perlvar{'lonVersion'};
# ================================================================== Roles Init
@@ -299,10 +367,8 @@ sub handler {
if (my ($ccrole,$domain,$coursenum) =
($envkey =~ m-^form\.(cc|co)\./($match_domain)/($match_courseid)$-)) {
if ($dcroles{$domain}) {
- if (&Apache::lonnet::check_adhoc_privs($domain,$coursenum,
- $update,$refresh,$now,$ccrole)) {
- &Apache::lonnet::appenv({"environment.internal.$domain.$coursenum.$ccrole.adhoc" => time});
- }
+ &Apache::lonnet::check_adhoc_privs($domain,$coursenum,
+ $update,$refresh,$now,$ccrole);
}
last;
}
@@ -317,7 +383,6 @@ sub handler {
my $trolecode = 'au./'.$domain.'/';
my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode;
$r->internal_redirect($switchserver);
- return OK;
}
last;
}
@@ -329,7 +394,6 @@ sub handler {
my $trolecode = 'ca./'.$domain.'/'.$user;
my $switchserver = '/adm/switchserver?otherserver='.$home.'&role='.$trolecode;
$r->internal_redirect($switchserver);
- return OK;
}
last;
}
@@ -351,7 +415,6 @@ sub handler {
my $switchserver = '/adm/switchserver?'
.'otherserver='.$home.'&role='.$trolecode;
$r->internal_redirect($switchserver);
- return OK;
}
} else {
delete($env{$envkey});
@@ -526,29 +589,8 @@ ENDENTERKEY
if (($cnum) && ($role ne 'ca') && ($role ne 'aa')) {
my $msg;
- my ($furl,$ferr)=
- &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
- unless ($ferr) {
- unless (($env{'form.switchrole'}) ||
- ($env{"environment.internal.$cdom.$cnum.$role.adhoc"})) {
- &Apache::lonnet::put('nohist_crslastlogin',
- {$env{'user.name'}.':'.$env{'user.domain'}.
- ':'.$csec.':'.$role => $now},$cdom,$cnum);
- }
- my ($feeds,$syllabus_time);
- &Apache::lonrss::advertisefeeds($cnum,$cdom,undef,\$feeds);
- &Apache::lonnet::appenv({'request.course.feeds' => $feeds});
- unless ($env{'course.'.$cdom.'_'.$cnum.'.updatedsyllabus'}) {
- unless (($env{'course.'.$cdom.'_'.$cnum.'.externalsyllabus'}) ||
- ($env{'course.'.$cdom.'_'.$cnum.'.uploadedsyllabus'})) {
- my %syllabus=&Apache::lonnet::dump('syllabus',$cdom,$cnum);
- $syllabus_time = $syllabus{'uploaded.lastmodified'};
- if ($syllabus_time) {
- &Apache::lonnet::appenv({'request.course.syllabustime' => $syllabus_time});
- }
- }
- }
- }
+ my ($furl,$ferr)=
+ &Apache::lonuserstate::readmap($cdom.'/'.$cnum);
if (($env{'form.orgurl'}) &&
($env{'form.orgurl'}!~/^\/adm\/flip/)) {
my $dest=$env{'form.orgurl'};
@@ -605,52 +647,11 @@ ENDENTERKEY
$furl = "/adm/helper/course.initialization.helper";
# Send the user to the course they selected
} elsif ($env{'request.course.id'}) {
- my ($dest,$destsymb,$checkenc);
- $dest = $env{'form.destinationurl'};
- $destsymb = $env{'form.destsymb'};
- if ($dest ne '') {
- if ($env{'form.switchrole'}) {
- if ($destsymb ne '') {
- if ($destsymb !~ m{^/enc/}) {
- unless ($env{'request.role.adv'}) {
- $checkenc = 1;
- }
- }
- }
- if ($dest =~ m{^/enc/}) {
- if ($env{'request.role.adv'}) {
- $dest = &Apache::lonenc::unencrypted($dest);
- if ($destsymb eq '') {
- ($destsymb) = ($dest =~ /(?:\?|\&)symb=([^\&]*)/);
- $destsymb = &unescape($destsymb);
- }
- }
- } else {
- if ($destsymb eq '') {
- ($destsymb) = ($dest =~ /(?:\?|\&)symb=([^\&]+)/);
- $destsymb = &unescape($destsymb);
- }
- unless ($env{'request.role.adv'}) {
- $checkenc = 1;
- }
- }
- if (($checkenc) && ($destsymb ne '')) {
- my ($encstate,$unencsymb,$res);
- $unencsymb = &Apache::lonnet::symbclean($destsymb);
- (undef,undef,$res) = &Apache::lonnet::decode_symb($unencsymb);
- &Apache::lonnet::symbverify($unencsymb,$res,\$encstate);
- if ($encstate) {
- if (($dest ne '') && ($dest !~ m{^/enc/})) {
- $dest=&Apache::lonenc::encrypted($dest);
- }
- }
- }
- }
- unless (($dest =~ m{^/enc/}) || ($dest =~ /(\?|\&)symb=.+___\d+___.+/)) {
- if (($destsymb ne '') && ($destsymb !~ m{^/enc/})) {
- my $esc_symb = &escape($destsymb);
- $dest .= '?symb='.$esc_symb;
- }
+ if ($env{'form.destinationurl'}) {
+ my $dest = $env{'form.destinationurl'};
+ if ($env{'form.destsymb'} ne '') {
+ my $esc_symb = &HTML::Entities::encode($env{'form.destsymb'},'"<>&');
+ $dest .= '?symb='.$esc_symb;
}
&redirect_user($r, &mt('Entering [_1]',
$env{'course.'.$courseid.'.description'}),
@@ -736,20 +737,15 @@ ENDENTERKEY
$recent = &mt('Recent Courses');
}
my $brcrum =[{href=>"/adm/roles",text=>$crumbtext}];
-
- my %roles_in_env;
- my $showcount = &roles_from_env(\%roles_in_env,$update);
-
my $swinfo=&Apache::lonmenu::rawconfig();
my $start_page=&Apache::loncommon::start_page($pagetitle,undef,{bread_crumbs=>$brcrum});
- my $funcs = &get_roles_functions($showcount);
my $standby=&mt('Role selected. Please stand by.');
$standby=~s/\n/\\n/g;
- my $noscript='
'.&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.').'
'.&mt('As this is not the case, most functionality in the system will be unavailable.').'
';
+ my $noscript=''.&mt('Use of LON-CAPA requires Javascript to be enabled in your web browser.').'
'.&mt('As this is not the case, most functionality in the system will be unavailable.').'
';
$r->print(<
'; + $msg .= '
'.&mt('Course/Community requests').'
'.
- &Apache::loncommon::start_data_table().
- &Apache::loncommon::start_data_table_header_row().
- '
'.&mt('Enrollment requests').'
'.
- $queuedselfenroll.'
'.&mt('Author role request').'
';
- if ($status eq 'approval') {
- $output .= &mt('A request for authoring space submitted on [_1] is awaiting approval',
- &Apache::lonlocal::locallocaltime($timestamp));
- } elsif ($status eq 'approved') {
- my %roleshash =
- &Apache::lonnet::get_my_roles($env{'user.name'},$env{'user.domain'},'userroles',
- ['active'],['au'],[$env{'user.domain'}]);
- if (keys(%roleshash)) {
- $output .= ''.
- &mt('Your request for an author role has been approved.').'
'.
- &mt('Use the "Check for changes" link to update your list of roles.').
- '';
- }
- }
- $output .= '