--- loncom/html/adm/helper/course.initialization.helper 2003/05/16 17:21:33 1.2
+++ loncom/html/adm/helper/course.initialization.helper 2007/09/03 20:23:57 1.18
@@ -1,8 +1,18 @@
- $helper->{DATA}->{DOM} = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'};
- $helper->{DATA}->{CRS} = $ENV{'course.'.$ENV{'request.course.id'}.'.num'};
+ 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()],
@@ -15,7 +25,9 @@
if (&{$helper->{DATA}->{GETVAL}}($name) ne $val) {
&Apache::lonnet::put('environment', {$name=>$val},
$helper->{DATA}->{DOM},
- $helper->{DATA}->{CRS});
+ $helper->{DATA}->{CRS});
+ # Try to fix bug 1757
+ Apache::lonnet::coursedescription($env{'request.course.id'});
return 1;
} else {
return 0;
@@ -24,50 +36,107 @@
-
- This Helper will help you set up your new LON-CAPA course and choose
- which LON-CAPA features will be active in your course. You can
- re-visit it later to change settings in your course.
-
- FIXME: Figure out some way to detect whether this has been
- run, and change that paragraph appropriatly.
-
- If you have previous experience with coordinating LON-CAPA courses and
- prefer not to use the Helper,
- click here to leave this Helper.
-
- All settings which you can change with this Helper can also be changed while the
- course is running by going to the PARM screen and clicking on the "Set
+
+ 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
+
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.
- For more information about discussion and the abilities available
- to you as a course coordinator, such as banning abusive users or
- hiding discussion postings, please see link.
-
- If you do not wish certain classes of users to be able to use the
- discussion features, select those classes below. Note your class
+
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.)
- Question: Does inability to use discussion mean they simply can't
- post, or that they can't see the discussion at all?
+ 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
- Exam Proctor - exam proctors will not be able to participate in discussions
my $denied = &{$helper->{DATA}->{GETVAL}}('pch.roles.denied');
$denied =~ s/,/\|\|\|/g;
@@ -101,20 +170,161 @@
-
- If you like, limited HTML can be allowed in the course discussions.
+
+ 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 'Choices finalcode.';
+
+ 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;
+ }
+ my @alldoms = &Apache::lonnet::all_domains();
+ foreach my $item (@cloners) {
+ if ($item ne '*') {
+ my ($clname,$cldom) = split(/:/,$item);
+ if ($clname eq '*') {
+ if ($cldom =~ /^$match_dom$/) {
+ if (!grep(/^\Q$cldom\E$/,@alldoms)) {
+ $disallowed{'domain'} .= $item.',';
+ }
+ } else {
+ $disallowed{'format'} .= $item.',';
+ }
+ } elsif ($item !~/^($match_uname)\:($match_dom)$/) {
+ $disallowed{'format'} .= $item.',';
+ } else {
+ if (!grep(/^\Q$cldom\E$/,@alldoms)) {
+ $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.
-
+ 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.
+
+