version 1.163, 2016/08/25 22:33:03
|
version 1.168, 2017/11/04 01:12:19
|
Line 82 use Apache::lonlocal;
|
Line 82 use Apache::lonlocal;
|
use Apache::lonuserutils; |
use Apache::lonuserutils; |
use Apache::lonclonecourse; |
use Apache::lonclonecourse; |
use LONCAPA::batchcreatecourse; |
use LONCAPA::batchcreatecourse; |
use LONCAPA; |
use LONCAPA qw(:DEFAULT :match); |
|
|
# ===================================================== Phase one: fill-in form |
# ===================================================== Phase one: fill-in form |
|
|
Line 106 sub print_course_creation_page {
|
Line 106 sub print_course_creation_page {
|
$course_home .= qq{>$server $host_servers{$server}</option>}; |
$course_home .= qq{>$server $host_servers{$server}</option>}; |
} |
} |
$course_home .= "\n</select>\n"; |
$course_home .= "\n</select>\n"; |
my $domform = &Apache::loncommon::select_dom_form($defdom,'ccdomain'); |
my ($trusted,$untrusted) = &Apache::lonnet::trusted_domains('enroll',$defdom); |
|
my $domform = &Apache::loncommon::select_dom_form($defdom,'ccdomain',undef,undef,undef,$trusted,$untrusted); |
my $cloneform=&Apache::loncommon::select_dom_form |
my $cloneform=&Apache::loncommon::select_dom_form |
($env{'request.role.domain'},'clonedomain'). |
($env{'request.role.domain'},'clonedomain'). |
&Apache::loncommon::selectcourse_link |
&Apache::loncommon::selectcourse_link |
Line 773 sub create_course {
|
Line 774 sub create_course {
|
} |
} |
|
|
sub print_intro_page { |
sub print_intro_page { |
my ($r,$show_all_choices,$cancreate) = @_; |
my ($r,$show_all_choices,$cancreate,$permission) = @_; |
my $start_page = |
my $start_page = |
&Apache::loncommon::start_page('Create a New Course, Community or Placement Test'); |
&Apache::loncommon::start_page('Create a New Course, Community or Placement Test'); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Options','Create_Course',undef,'Create_Courses'); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Options','Create_Course',undef,'Create_Courses'); |
Line 782 sub print_intro_page {
|
Line 783 sub print_intro_page {
|
my $helplink=&Apache::loncommon::help_open_topic('Create_Course_Community',&mt('Help on Creating Courses and Communities')); |
my $helplink=&Apache::loncommon::help_open_topic('Create_Course_Community',&mt('Help on Creating Courses and Communities')); |
|
|
# Create menu |
# Create menu |
|
my $approve = 'Display requests awaiting approval'; |
|
if ($permission->{'create'}) { |
|
$approve = 'Approve or reject requests'; |
|
} |
my @menu; |
my @menu; |
@menu = |
@menu = |
({ categorytitle => 'Course/Community Creation', |
({ categorytitle => 'Course/Community Creation', |
Line 789 sub print_intro_page {
|
Line 794 sub print_intro_page {
|
{ |
{ |
linktext => 'Create a single course', |
linktext => 'Create a single course', |
url => '/adm/createcourse?phase=courseone', |
url => '/adm/createcourse?phase=courseone', |
permission => 1, |
permission => $permission->{'create'}, |
#help => '', |
#help => '', |
icon => 'crsnew.png', |
icon => 'crsnew.png', |
linktitle => 'Create a new course by completing an online form.' |
linktitle => 'Create a new course by completing an online form.' |
Line 797 sub print_intro_page {
|
Line 802 sub print_intro_page {
|
{ |
{ |
linktext => 'Create a single community', |
linktext => 'Create a single community', |
url => '/adm/createcourse?phase=groupone', |
url => '/adm/createcourse?phase=groupone', |
permission => $cancreate->{'Community'}, |
permission => $permission->{'create'} && $cancreate->{'Community'}, |
#help => '', |
#help => '', |
icon => 'crsnew.png', |
icon => 'crsnew.png', |
linktitle => 'Create a new collaborative community by completing an online form.' |
linktitle => 'Create a new collaborative community by completing an online form.' |
Line 805 sub print_intro_page {
|
Line 810 sub print_intro_page {
|
{ |
{ |
linktext => 'Create a single placement test', |
linktext => 'Create a single placement test', |
url => '/adm/createcourse?phase=placementone', |
url => '/adm/createcourse?phase=placementone', |
permission => $cancreate->{'Placement'}, |
permission => $permission->{'create'} && $cancreate->{'Placement'}, |
#help => '', |
#help => '', |
icon => 'crsnew.png', |
icon => 'crsnew.png', |
linktitle => 'Create a new placement test by completing an online form.' |
linktitle => 'Create a new placement test by completing an online form.' |
Line 813 sub print_intro_page {
|
Line 818 sub print_intro_page {
|
{ |
{ |
linktext => 'Create courses/communities/placement tests by uploading an attributes file', |
linktext => 'Create courses/communities/placement tests by uploading an attributes file', |
url => '/adm/createcourse?phase=batchone', |
url => '/adm/createcourse?phase=batchone', |
permission => 1, |
permission => $permission->{'create'}, |
help => 'Batch_Creation', |
help => 'Batch_Creation', |
icon => 'uplcrs.png', |
icon => 'uplcrs.png', |
linktitle => 'Upload an attributes file containing specifications for one or more courses, communities or placement tests in XML format.' |
linktitle => 'Upload an attributes file containing specifications for one or more courses, communities or placement tests in XML format.' |
Line 823 sub print_intro_page {
|
Line 828 sub print_intro_page {
|
{ categorytitle => 'Course/Community Requests', |
{ categorytitle => 'Course/Community Requests', |
items => [ |
items => [ |
{ |
{ |
linktext => 'Approve or reject requests', |
linktext => $approve, |
url => '/adm/createcourse?phase=requestdisplay', |
url => '/adm/createcourse?phase=requestdisplay', |
permission => $show_all_choices, |
permission => $show_all_choices, |
#help => '', |
#help => '', |
Line 884 sub upload_batchfile {
|
Line 889 sub upload_batchfile {
|
|
|
sub process_batchfile { |
sub process_batchfile { |
my $r = shift; |
my $r = shift; |
my $start_page = |
|
&Apache::loncommon::start_page('Create a New Course, Community or Placement Test'); |
|
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Outcome','Create_Course',undef,'Create_Courses'); |
|
my $end_page = |
|
&Apache::loncommon::end_page(); |
|
my $defdom=$env{'request.role.domain'}; |
my $defdom=$env{'request.role.domain'}; |
my $batchfilepath=&Apache::lonnet::userfileupload('coursecreatorxml',undef, |
my $uname = $env{'user.name'}; |
'batchupload',undef,undef, |
my $udom = $env{'user.domain'}; |
undef,undef,$defdom); |
my $dir = &LONCAPA::tempdir().'addcourse'; |
my ($batchdir,$filename) = ($batchfilepath =~ m-^(.+)/pending/([^/]+)$-); |
|
my ($result,$logmsg); |
my ($result,$logmsg); |
if (-e "$batchfilepath") { |
if (($defdom =~ /^$match_domain$/) && ($uname =~ /^$match_username$/) && ($udom =~/^$match_domain$/)) { |
open(FILE,"<$batchfilepath"); |
my $batchfilepath=&Apache::lonnet::userfileupload('coursecreatorxml',undef, |
my @buffer = <FILE>; |
'batchupload',undef,undef, |
close(FILE); |
undef,undef,$defdom); |
if ((defined($filename)) && (defined($batchdir))) { |
if ($batchfilepath =~ m{^(\Q$dir/$defdom/web/$uname\_$udom\E)/pending/([^/]+)$}) { |
my @requests = ($filename); |
my ($batchdir,$filename) = ($1,$2); |
my %courseids = (); |
if (-e "$batchfilepath") { |
($result,$logmsg) = &LONCAPA::batchcreatecourse::create_courses( |
if (open(FILE,"<$batchfilepath")) { |
\@requests,\%courseids,'web',$defdom, |
my @buffer = <FILE>; |
$env{'user.name'},$env{'user.domain'}); |
|
if ($result) { |
|
if (!-e "$batchdir/processed") { |
|
mkdir("$batchdir/processed", 0755); |
|
open(FILE,">$batchdir/processed/$filename"); |
|
print FILE @buffer; |
|
close(FILE); |
close(FILE); |
if (-e "$batchdir/processed/$filename") { |
if ((defined($filename)) && (defined($batchdir))) { |
unlink("$batchdir/pending/$filename"); |
my @requests = ($filename); |
|
my %courseids = (); |
|
($result,$logmsg) = &LONCAPA::batchcreatecourse::create_courses( |
|
\@requests,\%courseids,'web',$defdom, |
|
$uname,$udom); |
|
if (keys(%courseids) > 0) { |
|
if (!-e "$batchdir/processed") { |
|
mkdir("$batchdir/processed", 0755); |
|
} |
|
if (-d "$batchdir/processed") { |
|
if (open(FILE,">$batchdir/processed/$filename")) { |
|
print FILE @buffer; |
|
close(FILE); |
|
} |
|
} |
|
if (-e "$batchdir/processed/$filename") { |
|
unlink("$batchdir/pending/$filename"); |
|
} |
|
} |
} |
} |
|
} else { |
|
$result = '<p class="LC_error">'.&mt('Could not open attributes file.').'<br />'.&mt('No courses created.').'</p>'; |
} |
} |
|
} else { |
|
$result = '<p class="LC_error">'.&mt('No uploaded attributes file found.').'<br />'.&mt('No courses created.').'</p>'; |
} |
} |
|
} else { |
|
$result = '<p class="LC_error">'.&mt('Invalid path to attributes file.').'<br />'.&mt('No courses created.').'</p>'; |
} |
} |
|
} else { |
|
$result = '<p class="LC_error">'.&mt("Your username, domain, and/or your current role's domain are missing or contain invalid characters."). |
|
'<br />'.&mt('No courses created.').'</p>'; |
} |
} |
$r->print($start_page.$crumbs.$logmsg.$result.'<br /><a href="/adm/createcourse">'. |
$r->print(&Apache::loncommon::start_page('Create a New Course, Community or Placement Test'). |
&mt('Creation options menu').'</a>'.$end_page); |
&Apache::lonhtmlcommon::breadcrumbs('Creation Outcome','Create_Course',undef,'Create_Courses'). |
|
$logmsg.$result.'<br /><a href="/adm/createcourse">'. |
|
&mt('Creation options menu').'</a>'. |
|
&Apache::loncommon::end_page()); |
|
|
} |
} |
|
|
Line 1298 ENDJS
|
Line 1321 ENDJS
|
|
|
} |
} |
|
|
|
sub get_permission { |
|
my ($dom) = @_; |
|
my ($allowed,%permission); |
|
if (&Apache::lonnet::allowed('ccc',$dom)) { |
|
$allowed = 1; |
|
%permission = ( |
|
create => 1, |
|
); |
|
} elsif (&Apache::lonnet::allowed('dcc',$dom)) { |
|
$allowed = 1; |
|
} |
|
return ($allowed,\%permission); |
|
} |
|
|
# ===================================================================== Handler |
# ===================================================================== Handler |
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
Line 1308 sub handler {
|
Line 1345 sub handler {
|
return OK; |
return OK; |
} |
} |
|
|
my $show_all_choices = 0; |
my ($allowed,$permission) = &get_permission($env{'request.role.domain'}); |
my $primary_rev = &Apache::lonnet::get_server_loncaparev($env{'request.role.domain'}); |
if ($allowed) { |
my %cancreate = ( |
my $show_all_choices = 0; |
Community => 0, |
my $primary_rev = &Apache::lonnet::get_server_loncaparev($env{'request.role.domain'}); |
Placement => 0, |
my %cancreate = ( |
); |
Community => 0, |
|
Placement => 0, |
if (($primary_rev ne 'refused') && ($primary_rev ne 'error') && |
); |
($primary_rev ne 'unknown_cmd') && ($primary_rev ne 'no_such_host')) { |
if (($primary_rev ne 'refused') && ($primary_rev ne 'error') && |
$show_all_choices = 1; |
($primary_rev ne 'unknown_cmd') && ($primary_rev ne 'no_such_host')) { |
my ($primary_major,$primary_minor) = split(/\./,$primary_rev); |
$show_all_choices = 1; |
foreach my $key (keys(%cancreate)) { |
my ($primary_major,$primary_minor) = split(/\./,$primary_rev); |
my ($needsmajor,$needsminor) = |
foreach my $key (keys(%cancreate)) { |
split(/\./,$Apache::lonnet::needsrelease{'course:crstype:'.$key}); |
my ($needsmajor,$needsminor) = |
unless (($needsmajor > $primary_major) || |
split(/\./,$Apache::lonnet::needsrelease{'course:crstype:'.$key}); |
(($needsmajor == $primary_major) && ($needsminor > $primary_minor))) { |
unless (($needsmajor > $primary_major) || |
$cancreate{$key} = 1; |
(($needsmajor == $primary_major) && ($needsminor > $primary_minor))) { |
|
$cancreate{$key} = 1; |
|
} |
} |
} |
} |
} |
} |
|
|
|
if (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'})) { |
|
&Apache::loncommon::content_type($r,'text/html'); |
&Apache::loncommon::content_type($r,'text/html'); |
$r->send_http_header; |
$r->send_http_header; |
|
|
Line 1340 sub handler {
|
Line 1377 sub handler {
|
({href=>"/adm/createcourse", |
({href=>"/adm/createcourse", |
text=>"Creation Options", |
text=>"Creation Options", |
faq=>79,bug=>'Dom Coord Interface',}); |
faq=>79,bug=>'Dom Coord Interface',}); |
if (($env{'form.phase'} eq 'coursetwo') || |
if (($permission->{'create'}) && |
(($env{'form.phase'} eq 'grouptwo') && |
(($env{'form.phase'} eq 'coursetwo') || |
|
(($env{'form.phase'} eq 'grouptwo') && |
($cancreate{'Community'})) || |
($cancreate{'Community'})) || |
(($env{'form.phase'} eq 'placementtwo') && |
(($env{'form.phase'} eq 'placementtwo') && |
($cancreate{'Placement'}))) { |
($cancreate{'Placement'})))) { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/createcourse?phase=$env{'form.prevphase'}", |
({href=>"/adm/createcourse?phase=$env{'form.prevphase'}", |
text=>&mt('[_1] Creation Settings',), |
text=>&mt('[_1] Creation Settings',), |
Line 1354 sub handler {
|
Line 1392 sub handler {
|
text=>"Creation Outcome", |
text=>"Creation Outcome", |
faq=>9,bug=>'Dom Coord Interface',}); |
faq=>9,bug=>'Dom Coord Interface',}); |
&create_course($r); |
&create_course($r); |
} elsif (($env{'form.phase'} eq 'courseone') || |
} elsif (($permission->{'create'}) && |
(($env{'form.phase'} eq 'groupone') && |
(($env{'form.phase'} eq 'courseone') || |
($cancreate{'Community'})) || |
(($env{'form.phase'} eq 'groupone') && |
(($env{'form.phase'} eq 'placementone') && |
($cancreate{'Community'})) || |
($cancreate{'Placement'}))) { |
(($env{'form.phase'} eq 'placementone') && |
|
($cancreate{'Placement'})))) { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/createcourse?phase=$env{'form.phase'}", |
({href=>"/adm/createcourse?phase=$env{'form.phase'}", |
text=>&mt('[_1] Creation Settings',), |
text=>&mt('[_1] Creation Settings',), |
faq=>9,bug=>'Dom Coord Interface',}); |
faq=>9,bug=>'Dom Coord Interface',}); |
&print_course_creation_page($r); |
&print_course_creation_page($r); |
} elsif ($env{'form.phase'} eq 'batchone') { |
} elsif (($permission->{'create'}) && |
|
($env{'form.phase'} eq 'batchone')) { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/createcourse?phase=$env{'form.phase'}", |
({href=>"/adm/createcourse?phase=$env{'form.phase'}", |
text=>"Upload Description File", |
text=>"Upload Description File", |
faq=>9,bug=>'Dom Coord Interface',}); |
faq=>9,bug=>'Dom Coord Interface',}); |
&upload_batchfile($r); |
&upload_batchfile($r); |
} elsif ($env{'form.phase'} eq 'batchtwo') { |
} elsif (($permission->{'create'}) && |
|
($env{'form.phase'} eq 'batchtwo')) { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/createcourse?phase=$env{'form.prevphase'}", |
({href=>"/adm/createcourse?phase=$env{'form.prevphase'}", |
text=>"Upload Description File", |
text=>"Upload Description File", |
Line 1388 sub handler {
|
Line 1429 sub handler {
|
my $js = &courserequestbrowser_javascript(); |
my $js = &courserequestbrowser_javascript(); |
my $start_page=&Apache::loncommon::start_page('Display Requests',$js); |
my $start_page=&Apache::loncommon::start_page('Display Requests',$js); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Display Requests','Course_Requests',undef,'Course_Requests'); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Display Requests','Course_Requests',undef,'Course_Requests'); |
|
my $context = 'domain'; |
|
unless ($permission->{'create'}) { |
|
$context = 'helpdesk'; |
|
} |
$r->print($start_page.$crumbs."\n".'<div>'. |
$r->print($start_page.$crumbs."\n".'<div>'. |
&Apache::loncoursequeueadmin::display_queued_requests( |
&Apache::loncoursequeueadmin::display_queued_requests( |
'domain',$env{'request.role.domain'}).'</div>'. |
$context,$env{'request.role.domain'}).'</div>'. |
&Apache::loncommon::end_page()); |
&Apache::loncommon::end_page()); |
} elsif (($env{'form.phase'} eq 'requestchange') && ($show_all_choices)) { |
} elsif (($permission->{'create'}) && |
|
($env{'form.phase'} eq 'requestchange') && ($show_all_choices)) { |
if ($env{'form.queue'} eq 'pending') { |
if ($env{'form.queue'} eq 'pending') { |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/createcourse?phase=pendingdisplay", |
({href=>"/adm/createcourse?phase=pendingdisplay", |
Line 1422 sub handler {
|
Line 1468 sub handler {
|
my $js = &courserequestbrowser_javascript(); |
my $js = &courserequestbrowser_javascript(); |
my $start_page=&Apache::loncommon::start_page('Display Pending Queue',$js); |
my $start_page=&Apache::loncommon::start_page('Display Pending Queue',$js); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Display Pending Queue','Course_Requests',undef,'Course_Requests'); |
my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Display Pending Queue','Course_Requests',undef,'Course_Requests'); |
|
my $context = 'pending'; |
|
unless ($permission->{'create'}) { |
|
$context = 'displaypending'; |
|
} |
$r->print($start_page.$crumbs."\n".'<div>'. |
$r->print($start_page.$crumbs."\n".'<div>'. |
&Apache::loncoursequeueadmin::display_queued_requests( |
&Apache::loncoursequeueadmin::display_queued_requests( |
'pending',$env{'request.role.domain'}).'</div>'. |
$context,$env{'request.role.domain'}).'</div>'. |
&Apache::loncommon::end_page()); |
&Apache::loncommon::end_page()); |
} elsif (($env{'form.phase'} eq 'requestvalidation') && ($show_all_choices)) { |
} elsif (($permission->{'create'}) && |
|
($env{'form.phase'} eq 'requestvalidation') && ($show_all_choices)) { |
my $js = &courserequestbrowser_javascript(); |
my $js = &courserequestbrowser_javascript(); |
&Apache::lonhtmlcommon::add_breadcrumb |
&Apache::lonhtmlcommon::add_breadcrumb |
({href=>"/adm/createcourse?phase=pendingdisplay", |
({href=>"/adm/createcourse?phase=pendingdisplay", |
Line 1453 sub handler {
|
Line 1504 sub handler {
|
&print_creation_logs($r); |
&print_creation_logs($r); |
$r->print('</div>'.&Apache::loncommon::end_page()); |
$r->print('</div>'.&Apache::loncommon::end_page()); |
} else { |
} else { |
&print_intro_page($r,$show_all_choices,\%cancreate); |
&print_intro_page($r,$show_all_choices,\%cancreate,$permission); |
} |
} |
} else { |
} else { |
$env{'user.error.msg'}= |
$env{'user.error.msg'}= |