--- loncom/interface/loncreatecourse.pm 2010/04/13 21:19:15 1.137 +++ loncom/interface/loncreatecourse.pm 2014/01/29 19:01:27 1.155 @@ -1,7 +1,7 @@ # The LearningOnline Network # Create a course # -# $Id: loncreatecourse.pm,v 1.137 2010/04/13 21:19:15 raeburn Exp $ +# $Id: loncreatecourse.pm,v 1.155 2014/01/29 19:01:27 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -93,6 +93,7 @@ sub print_course_creation_page { $crstype = 'Course'; } my $defdom=$env{'request.role.domain'}; + my %domdefaults = &Apache::lonnet::get_domain_defaults($defdom); my %host_servers = &Apache::lonnet::get_servers($defdom,'library'); my $course_home = '' + .'' .&Apache::lonhtmlcommon::row_closure() .&Apache::lonhtmlcommon::row_title($lt{'chsr'}) @@ -313,7 +317,9 @@ END if ($crstype eq 'Course') { $r->print(&Apache::lonhtmlcommon::row_headline() .'

'.$lt{'iinf'}.'

' - .$lt{'stat'} + .$lt{'stat'}.' ' + .&mt('Default credits can also be specified, if different from the domain defaults (official courses: [_1]; unofficial courses: [_2]; textbook courses: [_3]).', + $domdefaults{'officialcredits'},$domdefaults{'unofficialcredits'},$domdefaults{'textbookcredits'}) .&Apache::lonhtmlcommon::row_closure() .&Apache::lonhtmlcommon::row_title($lt{'ccod'}) @@ -331,8 +337,20 @@ END .'
('.$lt{'cscs'}.')' .&Apache::lonhtmlcommon::row_closure() ); + if ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'} || $domdefaults{'textbookcredits'}) { + $r->print(&Apache::lonhtmlcommon::row_title($lt{'ccre'}) + .'' + .'
('.$lt{'cred'}.')' + .&Apache::lonhtmlcommon::row_closure() + ); + } + $r->print(&Apache::lonhtmlcommon::row_title($lt{'crcd'}) + .'' + .''.&mt('Yes').(' 'x2) + .''.&mt('No') + .&Apache::lonhtmlcommon::row_closure() + ); } - # Table: New Course / Clone Course $r->print(&Apache::lonhtmlcommon::row_headline() .'

'.$lt{'crco'}.'

' @@ -359,15 +377,21 @@ END .'' - .' ' - .''); + } + $r->print('
('.$lt{'stco'}.')' .&Apache::lonhtmlcommon::row_closure(1) .&Apache::lonhtmlcommon::end_pick_box() @@ -399,7 +423,7 @@ END .' ' .&Apache::lonhtmlcommon::row_closure() .&Apache::lonhtmlcommon::row_headline() - .$lt{'asov'} + .''.$lt{'asov'}.'' .&Apache::lonhtmlcommon::row_closure(1) .&Apache::lonhtmlcommon::end_pick_box() .'' @@ -531,7 +555,7 @@ END

-' +' ); } elsif ($crstype eq 'Community') { $r->print(' @@ -554,6 +578,8 @@ sub create_course { my $ccdomain=&LONCAPA::clean_domain($env{'form.ccdomain'}); my $crstype = 'Community'; my ($enrollstart,$enrollend,$startaccess,$endaccess); + my %domdefaults = + &Apache::lonnet::get_domain_defaults($env{'request.role.domain'}); if ($env{'form.phase'} eq 'coursetwo') { $crstype='Course'; @@ -629,6 +655,15 @@ sub create_course { firstres => $env{'form.firstres'} }; + if (($crstype eq 'Course') && + ($domdefaults{'officialcredits'} || $domdefaults{'unofficialcredits'} || $domdefaults{'textbookcredits'})) { + $args->{'defaultcredits'} = $env{'form.defaultcredits'}; + } + + if ($env{'form.uniquecode'}) { + $args->{'uniquecode'} = 1; + } + # # Verify data # @@ -657,12 +692,12 @@ sub create_course { ,$env{'form.course_home'}.&Apache::loncommon::end_page())); return; } - my ($courseid,$crsudom,$crsunum); + my ($courseid,$crsudom,$crsunum,$code); my ($success,$output) = &Apache::loncommon::construct_course($args,\$logmsg,\$courseid, \$crsudom,\$crsunum, $env{'user.domain'}, - $env{'user.name'},'dc_create'); + $env{'user.name'},'dc_create',undef,undef,\$code); $r->print($output); if ($success) { # @@ -682,8 +717,13 @@ sub create_course { $r->print( '

'.&mt('Manage Access Keys').'

'); } + if ($code) { + $r->print( + '

'.&mt('Course identifier to share with students: [_1]',$code).'

' + ); + } # Flush the course logs so reverse user roles immediately updated - &Apache::lonnet::flushcourselogs(); + $r->register_cleanup(\&Apache::lonnet::flushcourselogs); $r->print('

'.&mt('Roles will be active at next login').'.

'); } $r->print('

'. @@ -699,62 +739,79 @@ sub print_intro_page { my $end_page = &Apache::loncommon::end_page(); my $helplink=&Apache::loncommon::help_open_topic('Create_Course_Community',&mt('Help on Creating Courses and Communities')); - my @choices = ({ internal_name => 'courseone', - name => &mt('Create a single course'), - short_description => &mt('Create a new course by completing an online form.'), - }); - if ($show_all_choices) { - push(@choices,{ internal_name => 'groupone', - name => &mt('Create a single community'), - short_description => - &mt('Create a new collaborative community by completing an online form.'), - }, - { internal_name => 'batchone', - name => &mt('Create courses/communities by uploading an attributes file'), - short_description => - &mt('Upload an attributes file containing specifications for one or more courses or communities in XML format.'), - help => 'Batch_Creation', - }, - { internal_name => 'requestdisplay', - name => &mt('Approve or reject requests'), - short_description => - &mt('Display course and community creation requests submitted by authorized users, held pending approval by a Domain Coordinator.'), - }, - { internal_name => 'pendingdisplay', - name => &mt('Display official course requests'), - short_description => - &mt('Display official course requests submitted by authorized users, held pending validation of instructor status.'), - }, - { internal_name => 'creationlog', - name => &mt('View creation log'), - short_description => - &mt('Display information about when, how and by whom courses and communities were created in this domain.'), - }); - } else { - push(@choices,{ internal_name => 'batchone', - name => &mt('Create courses by uploading an attributes file'), - short_description => - &mt('Upload an attributes file containing specifications for one or more courses in XML format.'), - help => 'Batch_Creation', - }); - } - my $options; - foreach my $choice (@choices) { - $options .='

'. - $choice->{'name'}.''; - if (exists($choice->{'help'})) { - $options .= &Apache::loncommon::help_open_topic($choice->{'help'}); - } - $options .= "

\n".' '.(' 'x8).$choice->{'short_description'}. - "\n"; - } - $r->print(< 'Course/Community Creation', + items => [ + { + linktext => 'Create a single course', + url => '/adm/createcourse?phase=courseone', + permission => 1, + #help => '', + icon => 'crsnew.png', + linktitle => 'Create a new course by completing an online form.' + }, + { + linktext => 'Create a single community', + url => '/adm/createcourse?phase=groupone', + permission => $show_all_choices, + #help => '', + icon => 'crsnew.png', + linktitle => 'Create a new collaborative community by completing an online form.' + }, + { + linktext => 'Create courses/communities by uploading an attributes file', + url => '/adm/createcourse?phase=batchone', + permission => 1, + help => 'Batch_Creation', + icon => 'uplcrs.png', + linktitle => 'Upload an attributes file containing specifications for one or more courses or communities in XML format.' + }, + ] + }, + { categorytitle => 'Course/Community Requests', + items => [ + { + linktext => 'Approve or reject requests', + url => '/adm/createcourse?phase=requestdisplay', + permission => $show_all_choices, + #help => '', + icon => 'rcrs.png', + linktitle => 'Display course and community creation requests submitted by authorized users, held pending approval by a Domain Coordinator.' + }, + { + linktext => 'View pending official course requests', + url => '/adm/createcourse?phase=pendingdisplay', + permission => $show_all_choices, + #help => '', + icon => 'edit-find.png', + alttext => '', + linktitle => 'Display official course requests submitted by authorized users, held pending validation of instructor status.' + }, + ] + }, + { categorytitle => 'Administration', + items => [ + { + linktext => 'View creation log', + url => '/adm/createcourse?phase=creationlog', + permission => $show_all_choices, + #help => '', + icon => 'document-properties.png', + linktitle => 'Display information about when, how and by whom courses and communities were created in this domain.' + }, + ] + }, + ); + + $r->print( + $start_page + .$crumbs + .&Apache::lonhtmlcommon::generate_menu(@menu) + .$end_page + ); } sub upload_batchfile { @@ -771,7 +828,7 @@ sub upload_batchfile { ''. '

'. ''); + 'value="'.&mt('Create Courses/Communities').'" />'); $r->print($end_page); return; } @@ -909,7 +966,7 @@ sub print_creation_logs { if ($numtitles) { if (($curr{'type'} eq 'official') || ($curr{'type'} eq 'unofficial')) { $instcodefilter = &instcode_srchstr($dom,$numtitles); - &Apache::courseclassifier::instcode_search_str($dom,$numtitles); + &Apache::courseclassifier::instcode_search_str($dom,$numtitles,\@codetitles); if ($curr{'type'} eq 'official') { $regexpok = 1; } else { @@ -1101,7 +1158,7 @@ sub creation_display_filter { $typename = $typenames->{$type}; } } - $output .= ''."\n"; + $output .= ''."\n"; } $output .= ''; } @@ -1320,7 +1377,7 @@ sub handler { '// ]]>'."\n". ''; my $start_page=&Apache::loncommon::start_page('Course/Community Creation Logs',$js); - my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Created Courses/Communities','Creation_Log',undef,'Creation_Log'); + my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Created Courses/Communities','Course_Creation_Log',undef,'Course_Creation_Log'); $r->print($start_page.$crumbs."\n".'
'); &print_creation_logs($r); $r->print('
'.&Apache::loncommon::end_page());