--- loncom/html/adm/helper/course.initialization.helper 2003/05/16 17:21:33 1.2 +++ loncom/html/adm/helper/course.initialization.helper 2009/02/12 21:15:53 1.23 @@ -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 Title" 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 e-mail + 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. - + 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. + +