my $courseid = $env{'request.course.id'}; my $crsdom = $env{'course.'.$courseid.'.domain'}; my $crsnum = $env{'course.'.$courseid.'.num'}; $helper->{DATA}->{DOM} = $crsdom; $helper->{DATA}->{CRS} = $crsnum; $helper->{DATA}->{FIRST_RUN} = $env{'course.'.$crsnum. '.course.intialization.not.run'}; # Delete the 'course.initialization.not.run' course environment Apache::lonnet::put('environment', {'course.helper.not.run' => 0}, $crsdom, $crsnum); Apache::lonnet::coursedescription($env{'request.course.id'}); $helper->{DATA}->{GETVAL} = sub { my @resultlist = &Apache::lonnet::get('environment', [shift()], $helper->{DATA}->{DOM}, $helper->{DATA}->{CRS}); return $resultlist[1]; }; $helper->{DATA}->{SETVAL} = sub { my $name = shift; my $val = shift; if (&{$helper->{DATA}->{GETVAL}}($name) ne $val) { &Apache::lonnet::put('environment', {$name=>$val}, $helper->{DATA}->{DOM}, $helper->{DATA}->{CRS}); # Try to fix bug 1757 Apache::lonnet::coursedescription($env{'request.course.id'}); return 1; } else { return 0; } } return $helper->{DATA}->{FIRST_RUN} ? 'This Helper will set up your new LON-CAPA course and choose '. 'which features will be active. You can '. 're-visit it later to change settings in your course.' . '

If you have previous experience with coordinating LON-CAPA courses and '. 'prefer not to use the helper, click here to leave.' : &mt('This helper will set up your LON-CAPA course and choose which features will be active.');

All settings which you can change with this Helper can also be changed by going to the PARM screen and clicking on the "Set course environment" button.

If you do not have experience coordinating LON-CAPA courses or if you prefer the Helper interface, please click Next ->.

The "Course Description" is the name of the course that will be seen by the students. You may now modify the description and hit "Next ->" to continue.
return &{$helper->{DATA}->{GETVAL}}('description'); if (&{$helper->{DATA}->{SETVAL}}('description', $element->getValue())) { return 'Course description changed to ' . $element->getValue() . '.'; }

LON-CAPA has live chat functionality. This course will receive its own chat room. You may deny students, TAs, or instructors the right to access the chat room.

Students - students will not be able to use or view the chat room. Teaching Assistants - teaching assistants will not be able use or view the chat room Instructor - instructors will not be able to use or view the chat room my $denied = &{$helper->{DATA}->{GETVAL}}('plc.roles.denied'); $denied =~ s/,/\|\|\|/g; return $denied; my $denied = $element->getValue(); $denied =~ s/\|\|\|/,/g; if (&{$helper->{DATA}->{SETVAL}}('plc.roles.denied', $denied)) { $denied =~ s/st/ students/; $denied =~ s/in/ instructors/; $denied =~ s/ta/ teaching assistants/; $denied =~ s/ep/ exam proctors/; if ($denied =~ /^[^,]*,[^,]*$/) { # only one comma $denied =~ s/,/ and/g; } else { # add "and" to last comma $denied =~ s/,([^,]*)$/, and\1/; } if ($denied) { $denied = substr($denied, 1) . ' not allowed to participate in live chatroom.'; $denied = ucfirst($denied); } else { $denied = 'Everyone can participate in live chatroom.'; } return $denied; } else { return ''; }
LON-CAPA hosts discussions on all resources in a course. By default, all users are allowed to participate in these discussions.

If you do not wish certain types of users to be able to use the discussion features, select those types below. Note your class may not have all of these roles; you may safely ignore roles you do not intend to use. (For instance, "Exam Proctor" is generally useful only for large courses.)

Types of users not allowed to participate in discussion can still view any discussion that other users post.

Students - students will not be able to participate in discussions Teaching Assistants - teaching assistants will not be able to participate in discussions Instructor - instructors will not be able to participate in discussions my $denied = &{$helper->{DATA}->{GETVAL}}('pch.roles.denied'); $denied =~ s/,/\|\|\|/g; return $denied; my $denied = $element->getValue(); $denied =~ s/\|\|\|/,/g; if (&{$helper->{DATA}->{SETVAL}}('pch.roles.denied', $denied)) { $denied =~ s/st/ students/; $denied =~ s/in/ instructors/; $denied =~ s/ta/ teaching assistants/; $denied =~ s/ep/ exam proctors/; if ($denied =~ /^[^,]*,[^,]*$/) { # only one comma $denied =~ s/,/ and/g; } else { # add "and" to last comma $denied =~ s/,([^,]*)$/, and\1/; } if ($denied) { $denied = substr($denied, 1) . ' not allowed to participate in discussion.'; $denied = ucfirst($denied); } else { $denied = 'Everyone can participate in discussion.'; } return $denied; } else { return ''; }

HTML can be allowed or banned inside of course discussion.

HTML banned: HTML will not be allowed in discussion postings. HTML allowed: Discussion participants can use limited HTML in their postings. return &{$helper->{DATA}->{GETVAL}}('allow_limited_html_in_feedback'); if (&{$helper->{DATA}->{SETVAL}}('allow_limited_html_in_feedback', $element->getValue())) { if ($element->getValue() eq 'yes') { return 'Limited HTML allowed in feedback.'; } else { return 'HTML not allowed in feedback.'; } }
Course members can provide feedback about the course. You can choose who will receive the feedback, such as a different instructor or a TA. Please enter their LON-CAPA address below, in the form user:domain, where "user" and "domain" are both the LON-CAPA username and LON-CAPA domain, not an email address.

return &mt('

Your current LON-CAPA domain is "[_1]".

',"$helper->{DATA}->{DOM}");
return &{$helper->{DATA}->{GETVAL}}('comment.email'); if (&{$helper->{DATA}->{SETVAL}}('comment.email', $element->getValue())) { return 'Comment address(es) updated to ' . $element->getValue() . '.'; }

Advanced: You can send the feedback from different sections to different people, by doing the following:

  • Separate each entry with a comma.
  • To send feedback to a certain address for different sections, append the section name or names (separated by semi-colons) in a parenthesized list after the user:domain.

For example,

john102:msu(001;002;003),bob293:msu(004;005;006),madeupname:here(007;008;009)

will route course feedback to "john102" for sections 1, 2, and 3, to "bob293" for 4, 5, and 6, and to "madeupname:here" for 7, 8, and 9. Note there is no requirement that the addresses be in any particular domain.

Existing courses can be cloned when creating new courses.
Cloning will copy the course structure, contents, and most parameters (automatically advancing any date parameters by six months).

Names of owners of other courses permitted to clone this course:
return &{$helper->{DATA}->{GETVAL}}('cloners'); my ($output,@cloners,%disallowed); my $match_dom = $LONCAPA::match_domain; my $match_uname = $LONCAPA::match_username; if ($val =~ /,/) { @cloners = split(/,/,$val); } else { $cloners[0] = $val; } foreach my $item (@cloners) { next if ($item =~ /^\s*$/); next if ($item eq '*'); my ($clname,$cldom) = split(/:/,$item); if ($clname eq '*') { if ($cldom =~ /^$match_dom$/) { if (!&Apache::lonnet::domain($cldom)) { $disallowed{'domain'} .= $item.','; } } else { $disallowed{'format'} .= $item.','; } } elsif ($item !~/^($match_uname)\:($match_dom)$/) { $disallowed{'format'} .= $item.','; } else { if (!&Apache::lonnet::domain($cldom)) { $disallowed{'domain'} .= $item.','; } elsif (&Apache::lonnet::homeserver($clname,$cldom) eq 'no_host') { $disallowed{'newuser'} .= $item.','; } } } foreach my $key (keys(%disallowed)) { $disallowed{$key} =~ s/,$//; } if (keys(%disallowed) > 0) { $output.= 'Your input contained the following errors:
    '; if (defined($disallowed{'format'})) { $output .= '
  • Invalid format: '. ''.$disallowed{'format'}.'
  • '; } if (defined($disallowed{'domain'})) { $output .= '
  • Domain(s) do(es) not exist: '. ''.$disallowed{'domain'}.'
  • '; } if (defined($disallowed{'newuser'})) { $output .= '
  • LON-CAPA user(s) do(es) not exist: '. ''.$disallowed{'newuser'}.'
  • '; } $output .= '
'; } return $output;
if (&{$helper->{DATA}->{SETVAL}}('cloners', $element->getValue())) { return 'Users allowed to clone course updated to ' . $element->getValue() . '.'; }

(Course Coordinators automatically have the right to clone their own courses.)
  • Format: user:domain, where "user" and "domain" are the LON-CAPA username and domain of the user.
  • Separate different users with a comma.
  • Use *:domain to allow course to be cloned by any course owner in the specified domain.
  • Use * to allow unrestricted cloning by all course owners in all domains.
Your course is now set up. Please select the Finish Course Initialization button to re-intialize the course with your chosen settings.

Remember that all of these settings can be modified in the PARMS screen, by pushing the Course Environment button.

$env{'course.'.$env{'request.course.id'}.'.clonedfrom'} After you select Finish Course Initialization, you will be taken to the Parameter Overview screen to update the dates for this cloned course.