Diff for /loncom/html/adm/helper/course.initialization.helper between versions 1.4 and 1.18

version 1.4, 2003/05/30 14:00:21 version 1.18, 2007/09/03 20:23:57
Line 1 Line 1
 <helper title="Course Initialization Helper" requiredpriv='opa'>  <helper title="Course Initialization Helper" requiredpriv='opa'>
   
   <exec>    <exec>
     $helper->{DATA}->{DOM} = $ENV{'course.'.$ENV{'request.course.id'}.'.domain'};      my $courseid = $env{'request.course.id'};
     $helper->{DATA}->{CRS} = $ENV{'course.'.$ENV{'request.course.id'}.'.num'};      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 {      $helper->{DATA}->{GETVAL} = sub {
         my @resultlist = &Apache::lonnet::get('environment', [shift()],           my @resultlist = &Apache::lonnet::get('environment', [shift()], 
Line 15 Line 25
         if (&{$helper->{DATA}->{GETVAL}}($name) ne $val) {          if (&{$helper->{DATA}->{GETVAL}}($name) ne $val) {
             &Apache::lonnet::put('environment', {$name=>$val},               &Apache::lonnet::put('environment', {$name=>$val}, 
                                  $helper->{DATA}->{DOM},                                   $helper->{DATA}->{DOM},
                                  $helper->{DATA}->{CRS});                                    $helper->{DATA}->{CRS});
               # Try to fix bug 1757
               Apache::lonnet::coursedescription($env{'request.course.id'});
             return 1;              return 1;
         } else {          } else {
             return 0;              return 0;
Line 24 Line 36
   </exec>    </exec>
   
   <state name="START" title="Welcome to Your New LON-CAPA Course">    <state name="START" title="Welcome to Your New LON-CAPA Course">
       <eval>
         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.' .
   
           '<p>If you have previous experience with coordinating LON-CAPA courses and '.
           'prefer not to use the helper, <a href="/adm/menu">click here</a> to leave.'
           :
           &mt('This helper will set up your LON-CAPA course and choose which features will be active.');
         </eval>
     <message nextstate="COURSE_DESCRIPTION">      <message nextstate="COURSE_DESCRIPTION">
          This Helper will help you set up your new LON-CAPA course and choose        <p>All settings which you can change with this Helper can also be changed
          which LON-CAPA features will be active in your course. You can            by going to the PARM screen and clicking on the &quot;Set
          re-visit it later to change settings in your course.  
   
       <p><b>FIXME:</b> Figure out some way to detect whether this has been  
          run, and change that paragraph appropriatly.</p>  
   
       <p>If you have previous experience with coordinating LON-CAPA courses and  
          prefer not to use the Helper,  
          <a href="/adm/menu">click here</a> to leave this Helper.</p>  
   
       <p>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 &quot;Set  
          course environment&quot; button.</p>           course environment&quot; button.</p>
   
       <p>If you do not have experience coordinating LON-CAPA courses, or if you        <p>If you do not have experience coordinating LON-CAPA courses or if you
          prefer the Helper interface, please click <nobr><b>Next -&gt;</b></nobr>.</p>           prefer the Helper interface, please click <nobr><b>Next -&gt;</b></nobr>.</p>
       </message>        </message>
     </state>      </state>
   
   <state name="COURSE_DESCRIPTION">    <state name="COURSE_DESCRIPTION" title="Course Description">
     <message nextstate="FORBID_DISCUSSION">      <message nextstate="FORBID_CHAT">
       The &quot;Course Description&quot; is the name of the course that will be        The &quot;Course Description&quot; is the name of the course that will be
       seen by the students. This should have been set up correctly when the        seen by the students.  You may now modify the description and hit 
       course was created, but please confirm that it is correct, or change it        <nobr>&quot;<b>Next -&gt;</b>&quot;</nobr> to continue.<br />
       if neccessary. Hit a <nobr>&quot;<b>Next -&gt</b>;&quot;</nobr> to continue.  
       </message>        </message>
     <string variable='description' size='60' >      <string variable='description' size='60' >
       <defaultvalue>        <defaultvalue>
Line 65 Line 76
       </string>        </string>
     </state>      </state>
   
     <state name="FORBID_CHAT" title="Chat Participation">
       <message nextstate="FORBID_DISCUSSION">
         <p>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.</p>
         </message>
       <choices variable="BANNED_CHAT_ROLES" multichoice="1" allowempty='1'>
         <choice computer="st"><b>Students</b> - students will not be able to use or view the chat room.</choice>
         <choice computer="ta"><b>Teaching Assistants</b> - teaching assistants will not be able use or view the chat room</choice>
         <choice computer="in"><b>Instructor</b> - instructors will not be able to use or view the chat room</choice>
         <defaultvalue>
           my $denied = &{$helper->{DATA}->{GETVAL}}('plc.roles.denied');
           $denied =~ s/,/\|\|\|/g;
           return $denied;
         </defaultvalue>
         <finalcode>
           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 '';
           }
         </finalcode>
         </choices>
       </state>
   
   <state name="FORBID_DISCUSSION" title="Discussion Participation">    <state name="FORBID_DISCUSSION" title="Discussion Participation">
     <message nextstate="DISCUSSION_HTML">      <message nextstate="DISCUSSION_HTML">
          LON-CAPA hosts discussions on all resources in a course. By default,           LON-CAPA hosts discussions on all resources in a course. By default,
          all users are allowed to participate in these discussions.           all users are allowed to participate in these discussions.
   
       <p>For more information about discussion and the abilities available        <p>If you do not wish certain types of users to be able to use the 
          to you as a course coordinator, such as banning abusive users or           discussion features, select those types below. Note your class
          hiding discussion postings, please see <b>link</b>.</p>  
   
       <p>If you do not wish certain classes of users to be able to use the   
          discussion features, select those classes below. Note your class  
          may not have all of these roles; you may safely ignore roles you           may not have all of these roles; you may safely ignore roles you
          do not intend to use. (For instance, &quot;Exam Proctor&quot; is           do not intend to use. (For instance, &quot;Exam Proctor&quot; is
          generally useful only for large courses.)</p>           generally useful only for large courses.)</p>
   
       <p><b>Question: Does inability to use discussion mean they simply can't        <p>Types of users not allowed to participate in discussion can
             post, or that they can't see the discussion at all?</b></p>           still view any discussion that other users post.</p>
   
       </message>        </message>
     <choices variable="BANNED_DISCUSSION_ROLES" multichoice="1" allowempty='1'>      <choices variable="BANNED_DISCUSSION_ROLES" multichoice="1" allowempty='1'>
       <choice computer="st"><b>Students</b> - students will not be able to participate in discussions</choice>        <choice computer="st"><b>Students</b> - students will not be able to participate in discussions</choice>
       <choice computer="ta"><b>Teaching Assistants</b> - teaching assistants will not be able to participate in discussions</choice>        <choice computer="ta"><b>Teaching Assistants</b> - teaching assistants will not be able to participate in discussions</choice>
       <choice computer="in"><b>Instructor</b> - instructors will not be able to participate in discussions</choice>        <choice computer="in"><b>Instructor</b> - instructors will not be able to participate in discussions</choice>
       <choice computer="ep"><b>Exam Proctor</b> - exam proctors will not be able to participate in discussions</choice>  
       <defaultvalue>        <defaultvalue>
         my $denied = &{$helper->{DATA}->{GETVAL}}('pch.roles.denied');          my $denied = &{$helper->{DATA}->{GETVAL}}('pch.roles.denied');
         $denied =~ s/,/\|\|\|/g;          $denied =~ s/,/\|\|\|/g;
Line 122 Line 171
   
   <state name="DISCUSSION_HTML" title="HTML in Discussions">    <state name="DISCUSSION_HTML" title="HTML in Discussions">
     <message nextstate="FEEDBACK_ADDRESSES">      <message nextstate="FEEDBACK_ADDRESSES">
       <p>If you like, limited HTML can be allowed in the course discussions.</p>        <p>HTML can be allowed or banned inside of course discussion.</p>
       </message>        </message>
     <choices variable="HTML_ALLOWED">      <choices variable="HTML_ALLOWED">
       <choice computer=""><b>HTML banned</b>: HTML will not be allowed in discussion postings.</choice>        <choice computer=""><b>HTML banned</b>: HTML will not be allowed in discussion postings.</choice>
Line 143 Line 192
     </state>      </state>
   
   <state name="FEEDBACK_ADDRESSES" title="Feedback Addresses for Course Content">    <state name="FEEDBACK_ADDRESSES" title="Feedback Addresses for Course Content">
     <message nextstate="FINAL">      <message nextstate="USERS_ALLOWED_TO_CLONE">
       People in the course can provide feedback about the resources used in        Course members can provide feedback about the course. You can choose
       the course by using the <b>FDBK</b> button while viewing a resource. If        who will receive the feedback, such as a different instructor or a
       the user labels the feedback as a &quot;question about course content&quot;,        TA. Please enter their LON-CAPA address below, in the
       it is sent to the course coordinator of that course.  
   
       <p>If you'd like that feedback to be sent to someone else, such as a  
       different instructor, please enter their LON-CAPA address below, in the  
       form <b>user:domain</b>, where &quot;user&quot; and &quot;domain&quot;        form <b>user:domain</b>, where &quot;user&quot; and &quot;domain&quot;
       are both the LON-CAPA username and LON-CAPA domain, not an email        are both the LON-CAPA username and LON-CAPA domain, not an email
       address.</p>         address.</p> 
       </message>        </message>
     <eval>return '<p>Your current LON-CAPA domain is &quot;<b>'       <eval>return &mt('<p>Your current LON-CAPA domain is &quot;<b>[_1]</b>&quot;.</p>',"$helper->{DATA}->{DOM}"); 
                  . $helper->{DATA}->{DOM} .  
                  '</b>&quot;.</p>';  
       </eval>        </eval>
     <string variable='feedback_addresses' size='60' >      <string variable='feedback_addresses' size='60' >
       <defaultvalue>        <defaultvalue>
Line 171 Line 214
         </finalcode>          </finalcode>
       </string>        </string>
     <message>      <message>
       <p><b>Advanced Functionality</b>: If you'd like to redirect different         <p><b>Advanced</b>: You can send the feedback from different sections
          section's feedback to different people, you can enter it as follows:</p>           to different people, by doing the following:</p>
   
       <ul><li>Seperate each entry with a comma.</li>        <ul><li>Separate each entry with a comma.</li>
           <li>To send feedback to a certain address for different sections,            <li>To send feedback to a certain address for different sections,
               append the section name or names (seperated by semi-colons)                append the section name or names (separated by semi-colons)
               in a parenthesized list after the <b>user:domain</b>.</li></ul>                in a parenthesized list after the <b>user:domain</b>.</li></ul>
   
       <p>For example,</p>        <p>For example,</p>
Line 190 Line 233
       </message>        </message>
     </state>      </state>
   
     <state name="USERS_ALLOWED_TO_CLONE" title="Granting permission to clone course">
      <message nextstate="FINAL"> 
         Existing courses can be cloned when creating new courses.<br />Cloning will copy the course structure, contents, and most parameters (automatically advancing any date parameters by six months).<br /><br />
         Names of owners of other courses permitted to clone this course:<br />
      </message>
      <string variable='can_clone' size='60' >
       <defaultvalue>
        return &{$helper->{DATA}->{GETVAL}}('cloners');
       </defaultvalue>
       <validator>
         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:<ul>';
             if (defined($disallowed{'format'})) {
                 $output  .= '<li>Invalid format: '.
                             '<b>'.$disallowed{'format'}.'</b></li>';
             }
             if (defined($disallowed{'domain'})) {
                 $output .= '<li>Domain(s) do(es) not exist: '.
                             '<b>'.$disallowed{'domain'}.'</b></li>';
             }
             if (defined($disallowed{'newuser'})) {
                 $output .= '<li>LON-CAPA user(s) do(es) not exist: '.
                            '<b>'.$disallowed{'newuser'}.'</b></li>';
             }
             $output .= '.</ul>';
         }
         return $output;
       </validator>
       <finalcode>
        if (&{$helper->{DATA}->{SETVAL}}('cloners', $element->getValue())) {
   
   
          return 'Users allowed to clone course updated to <b>' . $element->getValue() .
                    '</b>.';
        }
       </finalcode>
      </string>
      <message>
       <br />(Course Coordinators automatically have the right to clone their own courses.)
       <ul>
        <li>Format: <b>user:domain</b>, where &quot;user&quot; and &quot;domain&quot;
         are the LON-CAPA username and domain of the user.</li><li>Separate different users with a comma.</li><li>Use *:domain to allow course to be cloned by any course owner in the specified domain.</li><li>Use * to allow unrestricted cloning by all course owners in all domains.</li></ul>
      </message>
     </state>
   <state name="FINAL" title="Completed">    <state name="FINAL" title="Completed">
     <message>Your course is now set up. Please select the <b>Finish Course       <message>Your course is now set up. Please select the <b>Finish Course 
       Initialization</b> button to re-intialize the course with your chosen        Initialization</b> button to re-intialize the course with your chosen
       settings. You will be taken to the <b>NAV</b> screen for your course.        settings.
   
       <p>Remember that all of these settings can be modified in the <b>PARMS</b>        <p>Remember that all of these settings can be modified in the <b>PARMS</b>
          screen, by pushing the <b>Course Environment</b> button.</p>           screen, by pushing the <b>Course Environment</b> button.</p>
       </message>        </message>
       <condition>
         <clause>$env{'course.'.$env{'request.course.id'}.'.clonedfrom'}</clause>
         <message>After you select <b>Finish Course Initialization</b>,
                  you will be taken to the Parameter Overview screen to
                  update the dates for this cloned course.</message>
       </condition>
     <final restartCourse='1' />      <final restartCourse='1' />
     </state>      </state>
   </helper>    </helper>

Removed from v.1.4  
changed lines
  Added in v.1.18


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