'.&mt('Use the [_1]request form[_2] to submit a request for creation of a new course or community.','','').'');
+ }
+ if ($output) {
+ $r->print('
'.&mt('Request creation of a course or community').'
'.
+ '
'.
+ &mt('You have rights to request the creation of courses and/or communities in the following domain(s):').
+ '
'.
+ $output.
+ '
'.
+ &mt('Use the [_1]request form[_2] to submit a request for creation of a new course or community.',
+ '','').
+ '');
+ }
}
} elsif (!$env{'user.adv'}) {
+ if ($inrole) {
+ $r->print('
'.&mt('Currently no additional roles, courses or communities').'
');
+ } else {
+ $r->print('
'.&mt('Currently no active roles, courses or communities').'
');
+ }
&findcourse_advice($r,$cattype);
}
return;
@@ -1552,7 +1640,8 @@ sub privileges_info {
}
sub build_roletext {
- my ($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$trole,$twhere,$tpstart,$tpend,$nochoose,$button,$switchserver,$reinit,$switchwarning) = @_;
+ my ($trolecode,$tdom,$trest,$tstatus,$tryagain,$advanced,$tremark,$tbg,$trole,$twhere,
+ $tpstart,$tpend,$nochoose,$button,$switchserver,$reinit,$switchwarning) = @_;
my ($roletext,$roletext_end);
my $is_dc=($trolecode =~ m/^dc\./);
my $rowspan=($is_dc) ? ''
@@ -1641,29 +1730,42 @@ sub check_author_homeserver {
}
}
-sub check_fordc {
- my ($dcroles,$update,$then) = @_;
+sub check_for_adhoc {
+ my ($dcroles,$dhroles,$update,$then) = @_;
my $numdc = 0;
+ my $numdh = 0;
+ my $numadhoc = 0;
+ my $num_custom_adhoc = 0;
if ($env{'user.adv'}) {
- foreach my $envkey (sort keys %env) {
- if ($envkey=~/^user\.role\.dc\.\/($match_domain)\/$/) {
- my $dcdom = $1;
- my $livedc = 1;
+ foreach my $envkey (sort(keys(%env))) {
+ if ($envkey=~/^user\.role\.(dc|dh)\.\/($match_domain)\/$/) {
+ my $role = $1;
+ my $roledom = $2;
+ my $liverole = 1;
my ($tstart,$tend)=split(/\./,$env{$envkey});
my $limit = $update;
- if ($env{'request.role'} eq 'dc./'.$dcdom.'/') {
+ if ((($role eq 'dc') && ($env{'request.role'} eq 'dc./'.$roledom.'/')) ||
+ (($role eq 'dh') && ($env{'request.role'} eq 'dh./'.$roledom.'/'))) {
$limit = $then;
}
- if ($tstart && $tstart>$limit) { $livedc = 0; }
- if ($tend && $tend <$limit) { $livedc = 0; }
- if ($livedc) {
- $$dcroles{$dcdom} = $envkey;
- $numdc++;
+ if ($tstart && $tstart>$limit) { $liverole = 0; }
+ if ($tend && $tend <$limit) { $liverole = 0; }
+ if ($liverole) {
+ if ($role eq 'dc') {
+ $dcroles->{$roledom} = $envkey;
+ $numdc++;
+ } else {
+ $dhroles->{$roledom} = $envkey;
+ if ($env{'environment.adhocroles.'.$roledom} ne '') {
+ $numadhoc ++;
+ }
+ $numdh++;
+ }
}
}
}
}
- return $numdc;
+ return ($numdc,$numdh,$numadhoc);
}
sub adhoc_course_role {
@@ -1704,9 +1806,15 @@ sub adhoc_course_role {
my %cgroups =
&Apache::lonnet::get_active_groups($env{'user.domain'},
$env{'user.name'},$cdom,$cnum);
+ my $ccrole;
+ if ($crstype eq 'Community') {
+ $ccrole = 'co';
+ } else {
+ $ccrole = 'cc';
+ }
foreach my $group (keys(%cgroups)) {
$group_privs{$group} =
- $env{'user.priv.cc./'.$cdom.'/'.$cnum.'./'.$cdom.'/'.$cnum.'/'.$group};
+ $env{'user.priv.'.$ccrole.'./'.$cdom.'/'.$cnum.'./'.$cdom.'/'.$cnum.'/'.$group};
}
$newgroups{'/'.$cdom.'/'.$cnum} = \%group_privs;
my $area = '/'.$cdom.'/'.$cnum;
@@ -1754,76 +1862,26 @@ sub check_forcc {
return $is_cc;
}
-sub check_release_required {
- my ($loncaparev,$tcourseid,$trolecode,$required) = @_;
- my ($switchserver,$warning);
- if ($required ne '') {
- my ($reqdmajor,$reqdminor) = ($required =~ /^(\d+)\.(\d+)$/);
- my ($major,$minor) = ($loncaparev =~ /^\'?(\d+)\.(\d+)\.[\w.\-]+\'?$/);
- if ($reqdmajor ne '' && $reqdminor ne '') {
- my $otherserver;
- if (($major eq '' && $minor eq '') ||
- (($reqdmajor > $major) || (($reqdmajor == $major) && ($reqdminor > $minor)))) {
- my ($userdomserver) = &Apache::lonnet::choose_server($env{'user.domain'},undef,$required);
- my $switchlcrev =
- &Apache::lonnet::get_server_loncaparev($env{'user.domain'},
- $userdomserver);
- my ($swmajor,$swminor) = ($switchlcrev =~ /^\'?(\d+)\.(\d+)\.[\w.\-]+\'?$/);
- if (($swmajor eq '' && $swminor eq '') || ($reqdmajor > $swmajor) ||
- (($reqdmajor == $swmajor) && ($reqdminor > $swminor))) {
- my $cdom = $env{'course.'.$tcourseid.'.domain'};
- if ($cdom ne $env{'user.domain'}) {
- my ($coursedomserver,$coursehostname) = &Apache::lonnet::choose_server($cdom);
- my $serverhomeID = &Apache::lonnet::get_server_homeID($coursehostname);
- my $serverhomedom = &Apache::lonnet::host_domain($serverhomeID);
- my %defdomdefaults = &Apache::lonnet::get_domain_defaults($serverhomedom);
- my %udomdefaults = &Apache::lonnet::get_domain_defaults($env{'user.domain'});
- my $remoterev = &Apache::lonnet::get_server_loncaparev($serverhomedom,$coursedomserver);
- my $canhost =
- &Apache::lonnet::can_host_session($env{'user.domain'},
- $coursedomserver,
- $remoterev,
- $udomdefaults{'remotesessions'},
- $defdomdefaults{'hostedsessions'});
-
- if ($canhost) {
- $otherserver = $coursedomserver;
- } else {
- $warning = &mt('Requires LON-CAPA version [_1].',$env{'course.'.$tcourseid.'.internal.releaserequired'}).' '. &mt("No suitable server could be found amongst servers in either your own domain or in the course's domain.");
- }
- } else {
- $warning = &mt('Requires LON-CAPA version [_1].',$env{'course.'.$tcourseid.'.internal.releaserequired'}).' '.&mt("No suitable server could be found amongst servers in your own domain (which is also the course's domain).");
- }
- } else {
- $otherserver = $userdomserver;
- }
- }
- if ($otherserver ne '') {
- $switchserver = 'otherserver='.$otherserver.'&role='.$trolecode;
- }
- }
- }
- return ($switchserver,$warning);
-}
-
sub courselink {
- my ($dcdom,$rowtype) = @_;
+ my ($roledom,$rowtype,$role) = @_;
my $courseform=&Apache::loncommon::selectcourse_link
- ('rolechoice','dccourse'.$rowtype.'_'.$dcdom,
- 'dcdomain'.$rowtype.'_'.$dcdom,'coursedesc'.$rowtype.'_'.
- $dcdom,$dcdom,undef,'Course/Community');
- my $hiddenitems = ''.
- ''.
- ''.
- '';
+ ('rolechoice','course'.$rowtype.'_'.$roledom.'_'.$role,
+ 'domain'.$rowtype.'_'.$roledom.'_'.$role,
+ 'coursedesc'.$rowtype.'_'.$roledom.'_'.$role,
+ $roledom.':'.$role,undef,'Course/Community');
+ my $hiddenitems = ''.
+ ''.
+ ''.
+ '';
return $courseform.$hiddenitems;
}
sub coursepick_jscript {
- my %lt = &Apache::lonlocal::texthash(
+ my %js_lt = &Apache::lonlocal::texthash(
plsu => "Please use the 'Select Course/Community' link to open a separate pick course window where you may select the course or community you wish to enter.",
youc => 'You can only use this screen to select courses and communities in the current domain.',
);
+ &js_escape(\%js_lt);
my $verify_script = <<"END";