Diff for /loncom/interface/loncreatecourse.pm between versions 1.110.2.2 and 1.123

version 1.110.2.2, 2008/12/15 08:44:25 version 1.123, 2009/07/27 22:35:12
Line 27 Line 27
 #  #
 ###  ###
   
   =head1 NAME
   
   Apache::loncreatecourse.pm
   
   =head1 SYNOPSIS
   
   Allows domain coordinators to create new
   courses and assign course coordinators.
   
   This is part of the LearningOnline Network with CAPA project
   described at http://www.lon-capa.org.
   
   =head1 SUBROUTINES
   
   =over
   
   =item handler()
   
   =item print_course_creation_page()
   
   =item create_course()
   
   =item print_intro_page()
   
   =item upload_batchfile()
   
   =item process_batchfile()
   
   =back
   
   =cut
   
 package Apache::loncreatecourse;  package Apache::loncreatecourse;
   
 use strict;  use strict;
Line 44  use LONCAPA; Line 76  use LONCAPA;
   
 sub print_course_creation_page {  sub print_course_creation_page {
     my $r=shift;      my $r=shift;
     my $crstype = 'Course';      my $crstype = 'Community';
 #    my $crstype = 'Group';      if ($env{'form.phase'} eq 'courseone') {
 #    if ($env{'form.phase'} eq 'courseone') {          $crstype = 'Course';
 #        $crstype = 'Course';      }
 #    }  
     my $defdom=$env{'request.role.domain'};      my $defdom=$env{'request.role.domain'};
     my %host_servers = &Apache::lonnet::get_servers($defdom,'library');      my %host_servers = &Apache::lonnet::get_servers($defdom,'library');
     my $course_home = '<select name="course_home" size="1">'."\n";      my $course_home = '<select name="course_home" size="1">'."\n";
Line 87  sub print_course_creation_page { Line 118  sub print_course_creation_page {
         $intform = &Apache::loncommon::authform_internal(%param);          $intform = &Apache::loncommon::authform_internal(%param);
         $locform = &Apache::loncommon::authform_local(%param);          $locform = &Apache::loncommon::authform_local(%param);
     } else {      } else {
           my $title_alert = &mt('A Community title is required');
           my $coord_alert = &mt('The username of the Coordinator is required');
         $javascript_validations = qq|          $javascript_validations = qq|
 function validate(formname) {  function validate(formname) {
     if (formname.title == '') {      if (formname.title == '') {
         alert("A group title is required");          alert("$title_alert");
         return;          return;
     }      }
     if (formname.ccuname == '') {      if (formname.ccuname == '') {
         alert("The username of the group coordinator is required");          alert("$coord_alert");
     }      }
     formname.submit();      formname.submit();
 }  }
Line 125  function validate(formname) { Line 158  function validate(formname) {
                     'stco' => "standard courses only",                      'stco' => "standard courses only",
                     'blnk' => "Blank",                      'blnk' => "Blank",
                     'sllb' => "Syllabus",                      'sllb' => "Syllabus",
                     'navi' => "Navigate",                      'navi' => "Navigate Contents",
                     'cid'  => "Course ID",                      'cid'  => "Course ID",
                     'dmn'  => "Domain",                      'dmn'  => "Domain",
                     'dsh'  => "Date Shift",                      'dsh'  => "Date Shift",
Line 140  function validate(formname) { Line 173  function validate(formname) {
                     'scfc' => "Set content feedback to Course Coordinator",                      'scfc' => "Set content feedback to Course Coordinator",
                     'cmmn' => "Communication",                      'cmmn' => "Communication",
                     'dsrd' => "Disable student resource discussion",                      'dsrd' => "Disable student resource discussion",
                     'dsuc' => "Disable student use of chatrooms",                      'dsuc' => "Disable student use of chat rooms",
                     'acco' => "Access Control",                      'acco' => "Access Control",
                     'snak' => "Students need access key to enter course",                      'snak' => "Students need access key to enter course",
     'kaut' =>       'kaut' => 
Line 154  function validate(formname) { Line 187  function validate(formname) {
                     'no'   => "No",                      'no'   => "No",
                     'audr' => "Automated drops",                      'audr' => "Automated drops",
                     'dacu' => "Duration of automated classlist updates",                      'dacu' => "Duration of automated classlist updates",
                       'dads' => 'Default Access Dates for Students',
                     'dacc' => "Default start and end dates for student access",                      'dacc' => "Default start and end dates for student access",
                     'psam' => "Please select the Authentication mechanism",                      'psam' => "Please select the Authentication mechanism",
                     'pcda' => "Please choose the default authentication method to be used by new users added to this LON-CAPA domain by the automated enrollment process",                      'pcda' => "Please choose the default authentication method to be used by new users added to this LON-CAPA domain by the automated enrollment process",
Line 163  function validate(formname) { Line 197  function validate(formname) {
                     'irsp' => "Include retrieval of student photographs?",                      'irsp' => "Include retrieval of student photographs?",
     'rshm' => 'Resource Space Home',      'rshm' => 'Resource Space Home',
                     'cgrs' => "Course Group Settings",                      'cgrs' => "Course Group Settings",
                     'cgrq' => "Set a quota for the total disk space available for storage of course group portfolio files.",                      'cgrq' => 'Set a quota for the total disk space available for storage of course group portfolio files',
                     'opco' => "Open Course",                      'opco' => "Open Course",
                     'ginf' => "Group Information",                      'ginf' => "Community Information",
                     'gtit' => "Group Title",                      'gtit' => "Community Title",
                     'ghsr' => "Group Home Server",                      'ghsr' => "Community Home Server",
                     'gidn' => "Group ID/Number",                      'gidn' => "Community ID/Number",
                     'grco' => "Group Content",                      'grco' => "Community Content",
                     'cngr' => "Completely new group",                      'cngr' => "Completely new community",
                     'cegr' => "Clone an existing group",                      'cegr' => "Clone an existing community",
                     'sagr' => "Do NOT generate as standard group",                      'sagr' => "Do NOT generate as standard community",
                     'stgo' => "standard groups only",                      'stgo' => "standard communities only",
                     'sgpf' => "Set group policy feedback to Group Coordinator",                      'sgpf' => "Set community policy feedback to Coordinator",
                     'scfg' => "Set content feedback to Group Coordinator",                      'scfg' => "Set content feedback to Coordinator",
                     'dmrd' => "Disable member resource discussion",                      'dmrd' => "Disable member resource discussion",
                     'dmuc' => "Disable member use of chatrooms",                      'dmuc' => "Disable member use of chat rooms",
                     'mnak' => "Members need access key to enter group",                      'mnak' => "Members need access key to enter community",
                     'kaug' =>                      'kaug' =>
                     'Key authority (<tt>id@domain</tt>) if other than group',                      'Key authority (<tt>id@domain</tt>) if other than community',
                     'gc'   => "Group Coordinator",                      'gc'   => "Coordinator",
                     'gid'  => "Group ID",                      'gid'  => "Community ID",
                     'crgr' => "Create Group",                      'crgr' => "Create Community",
                     'grts' => "Group Teams Settings",                      'grts' => "Community Group Settings",
                     'grtq' => "Set a quota for the total disk space available for storage of group team portfolio files.",                      'grtq' => "Set a quota for the total disk space available for storage of community group portfolio files.",
   
        );         );
     my $js = <<END;      my $js = <<END;
Line 214  END Line 248  END
   
     my %titles = &Apache::lonlocal::texthash(      my %titles = &Apache::lonlocal::texthash(
                   courseone => 'Create a New Course',                    courseone => 'Create a New Course',
                   groupone => 'Create a New Group',                    groupone => 'Create a New Community',
     );        );  
     my $start_page =       my $start_page = 
         &Apache::loncommon::start_page($titles{$env{'form.phase'}},$js);          &Apache::loncommon::start_page($titles{$env{'form.phase'}},$js);
Line 227  END Line 261  END
     $r->print($start_page.$crumbs);      $r->print($start_page.$crumbs);
   
     if ($crstype eq 'Course') {      if ($crstype eq 'Course') {
         $r->print('<form action="/adm/createcourse" method="post" name="ccrs">'          $r->print('<form action="/adm/createcourse" method="post" name="ccrs"><div class="LC_createcourse">'
                  .'<div class="LC_createcourse">'  
                  .&Apache::lonhtmlcommon::start_pick_box()                   .&Apache::lonhtmlcommon::start_pick_box()
   
                  .&Apache::lonhtmlcommon::row_headline()                   .&Apache::lonhtmlcommon::row_headline()
Line 344  END Line 377  END
         );          );
   
         $r->print(&Apache::lonhtmlcommon::row_headline()          $r->print(&Apache::lonhtmlcommon::row_headline()
                    .'<h3>'.$lt{'dads'}.'</h3>'
                    .&Apache::lonhtmlcommon::row_closure()
                    .&Apache::lonhtmlcommon::row_title($lt{'dacc'})
                    .$access_table
                    .&Apache::lonhtmlcommon::row_closure()
           );
   
           $r->print(&Apache::lonhtmlcommon::row_headline()
                  .'<h3>'.$lt{'assp'}.'</h3>'                   .'<h3>'.$lt{'assp'}.'</h3>'
                  .&Apache::lonhtmlcommon::row_closure()                   .&Apache::lonhtmlcommon::row_closure()
   
Line 372  END Line 413  END
                  .&Apache::lonhtmlcommon::row_closure()                   .&Apache::lonhtmlcommon::row_closure()
   
                  .&Apache::lonhtmlcommon::row_title($lt{'dsuc'})                   .&Apache::lonhtmlcommon::row_title($lt{'dsuc'})
                  .'<input type="checkbox" name="disablechat" /'                   .'<input type="checkbox" name="disablechat" />'
                  .&Apache::lonhtmlcommon::row_closure()                   .&Apache::lonhtmlcommon::row_closure()
   
                  .&Apache::lonhtmlcommon::row_headline()                   .&Apache::lonhtmlcommon::row_headline()
Line 413  END Line 454  END
                  .$enroll_table                   .$enroll_table
                  .&Apache::lonhtmlcommon::row_closure()                   .&Apache::lonhtmlcommon::row_closure()
   
                  .&Apache::lonhtmlcommon::row_title($lt{'dacc'})  
                  .$access_table  
                  .&Apache::lonhtmlcommon::row_closure()  
   
                  .&Apache::lonhtmlcommon::row_title($lt{'psam'})                   .&Apache::lonhtmlcommon::row_title($lt{'psam'})
                  .$lt{'pcda'}.'<br />'                   .$lt{'pcda'}.'<br />'
                  .$krbform.'<br />'                   .$krbform.'<br />'
Line 457  END Line 494  END
   
                  .&Apache::lonhtmlcommon::row_title($lt{'user'})                   .&Apache::lonhtmlcommon::row_title($lt{'user'})
                  .'<input type="text" size="15" name="ccuname" />'                   .'<input type="text" size="15" name="ccuname" />'
                    .&Apache::loncommon::studentbrowser_javascript()
                    .&Apache::loncommon::selectstudent_link('ccrs','ccuname','ccdomain')
                  .&Apache::lonhtmlcommon::row_closure()                   .&Apache::lonhtmlcommon::row_closure()
   
                  .&Apache::lonhtmlcommon::row_title($lt{'dmn'},"","LC_odd_row_value")                   .&Apache::lonhtmlcommon::row_title($lt{'dmn'},"","LC_odd_row_value")
Line 465  END Line 504  END
   
                  .&Apache::lonhtmlcommon::end_pick_box()                   .&Apache::lonhtmlcommon::end_pick_box()
         );          );
   
         $r->print(<<ENDDOCUMENT);          $r->print(<<ENDDOCUMENT);
 </div>  </div>
 <p>  <p>
Line 476  END Line 514  END
 </form>  </form>
 ENDDOCUMENT  ENDDOCUMENT
   
     } elsif ($crstype eq 'Group') {      } elsif ($crstype eq 'Community') {
         $r->print(<<ENDDOCUMENT);          $r->print(<<ENDDOCUMENT);
 <form action="/adm/createcourse" method="post" name="ccrs">  <form action="/adm/createcourse" method="post" name="ccrs">
 <h2>$lt{'ginf'}</h2>  <h2>$lt{'ginf'}</h2>
Line 616  sub create_course { Line 654  sub create_course {
     my $r=shift;      my $r=shift;
     my $ccuname =&LONCAPA::clean_username($env{'form.ccuname'});      my $ccuname =&LONCAPA::clean_username($env{'form.ccuname'});
     my $ccdomain=&LONCAPA::clean_domain($env{'form.ccdomain'});      my $ccdomain=&LONCAPA::clean_domain($env{'form.ccdomain'});
     my $crstype = 'Group';      my $crstype = 'Community';
     my ($enrollstart,$enrollend,$startaccess,$endaccess);      my ($enrollstart,$enrollend,$startaccess,$endaccess);
   
     if ($env{'form.phase'} eq 'coursetwo') {      if ($env{'form.phase'} eq 'coursetwo') {
Line 733  sub create_course { Line 771  sub create_course {
  # Make the requested user a course coordinator or group coordinator   # Make the requested user a course coordinator or group coordinator
         #          #
  if (($ccdomain) && ($ccuname)) {   if (($ccdomain) && ($ccuname)) {
     $r->print(&mt('Assigning role of [_1] Coordinator to [_2] at [_3]: ',      $r->print(&mt('Assigning role of '.$crstype.' Coordinator to [_1]:',
   $crstype,$ccuname,$ccdomain).   ,'<i>'.$ccuname.':'.$ccdomain.'</i>')
       &Apache::lonnet::assignrole($ccdomain,$ccuname,$courseid,        .&Apache::lonnet::assignrole($ccdomain,$ccuname,$courseid,
   'cc','','','','','createcourse').'<p>');    'cc','','','','','createcourse').'<p>');
  }   }
  if ($env{'form.setkeys'}) {   if ($env{'form.setkeys'}) {
Line 747  sub create_course { Line 785  sub create_course {
  $r->print('<p>'.&mt('Roles will be active at next login').'.</p>');   $r->print('<p>'.&mt('Roles will be active at next login').'.</p>');
     }      }
     $r->print('<p><a href="/adm/createcourse?phase='.lc($crstype).'one">'.      $r->print('<p><a href="/adm/createcourse?phase='.lc($crstype).'one">'.
       &mt('Create Another [_1]',$crstype).'</a></p>'.        &mt("Create Another $crstype").'</a></p>'.
       &Apache::loncommon::end_page());        &Apache::loncommon::end_page());
 }  }
   
 sub print_intro_page {  sub print_intro_page {
     my $r = shift;      my $r = shift;
     my $start_page =      my $start_page =
         &Apache::loncommon::start_page('Create a New Course');          &Apache::loncommon::start_page('Create a New Course or Community');
     my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Options','Create_Course',undef,'Create_Courses');      my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Options','Create_Course',undef,'Create_Courses');
     my $end_page =      my $end_page =
         &Apache::loncommon::end_page();          &Apache::loncommon::end_page();
     my $helplink=&Apache::loncommon::help_open_topic('Create_Course_GroupSpace',&mt('Help on Creating Courses and Groups'));      my $helplink=&Apache::loncommon::help_open_topic('Create_Course_Community',&mt('Help on Creating Courses and Communities'));
   
     my @choices = ({ internal_name => 'courseone',      my @choices = ({ internal_name => 'courseone',
                      name => &mt('Create a single course'),                       name => &mt('Create a single course'),
                      short_description =>                       short_description =>
     &mt('Create a new course by completing an online form.'),      &mt('Create a new course by completing an online form.'),
                  },                   },
 #                   { internal_name => 'groupone',                     { internal_name => 'groupone',
 #                     name => &mt('Create a single collaborative group space'),                       name => &mt('Create a single collaborative "community"'),
 #                     short_description =>                       short_description =>
 #    &mt('Create a new group space for non-course use by completing an online form.'),      &mt('Create a new collaborative community by completing an online form.'),
 #                 },                   },
                    { internal_name => 'batchone',                     { internal_name => 'batchone',
                      name => &mt('Create courses by uploading an attributes file'),                       name => &mt('Create courses/communities by uploading an attributes file'),
                      short_description =>                       short_description =>
     &mt('Upload an attributes file containing specifications for one or more courses in XML format.'),      &mt('Upload an attributes file containing specifications for one or more courses or communities in XML format.'),
                      help => 'Batch_Creation',                       help => 'Batch_Creation',
                  },                   },
     );      );
Line 800  ENDDOCUMENT Line 838  ENDDOCUMENT
 sub upload_batchfile {  sub upload_batchfile {
     my $r = shift;      my $r = shift;
     my $start_page =      my $start_page =
         &Apache::loncommon::start_page('Create a New Course or Group Space');          &Apache::loncommon::start_page('Create a New Course or Community');
     my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Upload Course Attributes File','Create_Course',undef,'Create_Courses');      my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Upload Course/Community Attributes File','Create_Course',undef,'Create_Courses');
     my $end_page =      my $end_page =
         &Apache::loncommon::end_page();          &Apache::loncommon::end_page();
     $r->print($start_page.$crumbs);      $r->print($start_page.$crumbs);
     $r->print('<h3>'.&mt('Upload a courses attributes file').'</h3>');      $r->print('<h3>'.&mt('Upload a courses or groups attributes file').'</h3>');
     $r->print('<form name="batchcreate" method="post" '.      $r->print('<form name="batchcreate" method="post" '.
                 'enctype="multipart/form-data" action="/adm/createcourse">'.                  'enctype="multipart/form-data" action="/adm/createcourse">'.
               '<input type="file" name="coursecreatorxml" />'.                '<input type="file" name="coursecreatorxml" />'.
               '<input type="hidden" name="phase" value="batchtwo"><br /><br />'.                '<input type="hidden" name="phase" value="batchtwo" /><br /><br />'.
               '<input type="submit" name="batchsubmit" '.                '<input type="submit" name="batchsubmit" '.
               'value="Create Courses/Groups" /></form>');                'value="Create Courses/Communities" /></form>');
     $r->print($end_page);      $r->print($end_page);
     return;      return;
 }  }
Line 819  sub upload_batchfile { Line 857  sub upload_batchfile {
 sub process_batchfile {  sub process_batchfile {
     my $r = shift;      my $r = shift;
     my $start_page =      my $start_page =
         &Apache::loncommon::start_page('Create a New Course or Group Space');          &Apache::loncommon::start_page('Create a New Course or Community');
     my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Outcome','Create_Course',undef,'Create_Courses');      my $crumbs = &Apache::lonhtmlcommon::breadcrumbs('Creation Outcome','Create_Course',undef,'Create_Courses');
     my $end_page =      my $end_page =
         &Apache::loncommon::end_page();          &Apache::loncommon::end_page();

Removed from v.1.110.2.2  
changed lines
  Added in v.1.123


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>