Diff for /loncom/interface/loncommon.pm between versions 1.901 and 1.910

version 1.901, 2009/10/22 13:41:41 version 1.910, 2009/11/04 17:42:17
Line 482  ENDAUTHORBRW Line 482  ENDAUTHORBRW
 }  }
   
 sub coursebrowser_javascript {  sub coursebrowser_javascript {
     my ($domainfilter,$sec_element,$formname)=@_;      my ($domainfilter,$sec_element,$formname,$role_element,$crstype) = @_;
     my $crs_or_grp_alert = &mt('Please select the type of LON-CAPA entity - Course or Community - for which you wish to add/modify a user role.');      my $wintitle = &mt('Course Browser');
       if ($crstype ne '') {
           $wintitle = &mt($crstype);
       }
     my $id_functions = &javascript_index_functions();      my $id_functions = &javascript_index_functions();
     my $output = '      my $output = '
 <script type="text/javascript" language="JavaScript">  <script type="text/javascript" language="JavaScript">
Line 491  sub coursebrowser_javascript { Line 494  sub coursebrowser_javascript {
     var stdeditbrowser;'."\n";      var stdeditbrowser;'."\n";
   
     $output .= <<"ENDSTDBRW";      $output .= <<"ENDSTDBRW";
     function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag,crstype) {      function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag,type,type_elem) {
         var url = '/adm/pickcourse?';          var url = '/adm/pickcourse?';
         var formid = getFormIdByName(formname);          var formid = getFormIdByName(formname);
         var domainfilter = getDomainFromSelectbox(formname,udom);          var domainfilter = getDomainFromSelectbox(formname,udom);
Line 520  sub coursebrowser_javascript { Line 523  sub coursebrowser_javascript {
                 }                  }
             }                   }     
         }          }
           if (type != null && type != '') {
               url += '&type='+type;
           }
           if (type_elem != null && type_elem != '') {
               url += '&typeelement='+type_elem;
           }
         if (formname == 'ccrs') {          if (formname == 'ccrs') {
             var ownername = document.forms[formid].ccuname.value;              var ownername = document.forms[formid].ccuname.value;
             var ownerdom =  document.forms[formid].ccdomain.options[document.forms[formid].ccdomain.selectedIndex].value;              var ownerdom =  document.forms[formid].ccdomain.options[document.forms[formid].ccdomain.selectedIndex].value;
Line 528  sub coursebrowser_javascript { Line 537  sub coursebrowser_javascript {
         if (multflag !=null && multflag != '') {          if (multflag !=null && multflag != '') {
             url += '&multiple='+multflag;              url += '&multiple='+multflag;
         }          }
         if (crstype == 'Course/Community') {          var title = '$wintitle';
             if (formname == 'cu') {  
                 crstype = document.cu.crstype.options[document.cu.crstype.selectedIndex].value;   
                 if (crstype == "") {  
                     alert("$crs_or_grp_alert");  
                     return;  
                 }  
             }  
         }  
         if (crstype !=null && crstype != '') {  
             url += '&type='+crstype;  
         }  
         var title = 'Course_Browser';  
         var options = 'scrollbars=1,resizable=1,menubar=0';          var options = 'scrollbars=1,resizable=1,menubar=0';
         options += ',width=700,height=600';          options += ',width=700,height=600';
         stdeditbrowser = open(url,title,options,'1');          stdeditbrowser = open(url,title,options,'1');
Line 548  sub coursebrowser_javascript { Line 545  sub coursebrowser_javascript {
     }      }
 $id_functions  $id_functions
 ENDSTDBRW  ENDSTDBRW
     if ($sec_element ne '') {      if (($sec_element ne '') || ($role_element ne '')) {
         $output .= &setsec_javascript($sec_element,$formname);          $output .= &setsec_javascript($sec_element,$formname,$role_element);
     }      }
     $output .= '      $output .= '
 // ]]>  // ]]>
Line 661  ENDUSERBRW Line 658  ENDUSERBRW
 }  }
   
 sub setsec_javascript {  sub setsec_javascript {
     my ($sec_element,$formname) = @_;      my ($sec_element,$formname,$role_element) = @_;
       my (@courserolenames,@communityrolenames,$rolestr,$courserolestr,
           $communityrolestr);
       if ($role_element ne '') {
           my @allroles = ('st','ta','ep','in','ad');
           foreach my $crstype ('Course','Community') {
               if ($crstype eq 'Community') {
                   foreach my $role (@allroles) {
                       push(@communityrolenames,&Apache::lonnet::plaintext($role,$crstype));
                   }
                   push(@communityrolenames,&Apache::lonnet::plaintext('co'));
               } else {
                   foreach my $role (@allroles) {
                       push(@courserolenames,&Apache::lonnet::plaintext($role,$crstype));
                   }
                   push(@courserolenames,&Apache::lonnet::plaintext('cc'));
               }
           }
           $rolestr = '"'.join('","',@allroles).'"';
           $courserolestr = '"'.join('","',@courserolenames).'"';
           $communityrolestr = '"'.join('","',@communityrolenames).'"';
       }
     my $setsections = qq|      my $setsections = qq|
 function setSect(sectionlist) {  function setSect(sectionlist) {
     var sectionsArray = new Array();      var sectionsArray = new Array();
Line 695  function setSect(sectionlist) { Line 713  function setSect(sectionlist) {
         }          }
     }      }
 }  }
   
   function setRole(crstype) {
   |;
       if ($role_element eq '') {
           $setsections .= '    return;
   }
   ';
       } else {
           $setsections .= qq|
       var elementLength = document.$formname.$role_element.length;
       var allroles = Array($rolestr);
       var courserolenames = Array($courserolestr);
       var communityrolenames = Array($communityrolestr);
       if (elementLength != undefined) {
           if (document.$formname.$role_element.options[5].value == 'cc') {
               if (crstype == 'Course') {
                   return;
               } else {
                   allroles[5] = 'co';
                   for (var i=0; i<6; i++) {
                       document.$formname.$role_element.options[i].value = allroles[i];
                       document.$formname.$role_element.options[i].text = communityrolenames[i];
                   }
               }
           } else {
               if (crstype == 'Community') {
                   return;
               } else {
                   allroles[5] = 'cc';
                   for (var i=0; i<6; i++) {
                       document.$formname.$role_element.options[i].value = allroles[i];
                       document.$formname.$role_element.options[i].text = courserolenames[i];
                   }
               }
           }
       }
       return;
   }
 |;  |;
       }
     return $setsections;      return $setsections;
 }  }
   
   
 sub selectcourse_link {  sub selectcourse_link {
    my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype)=@_;     my ($form,$unameele,$udomele,$desc,$extra_element,$multflag,$selecttype,
          $typeelement) = @_;
      my $type = $selecttype;
    my $linktext = &mt('Select Course');     my $linktext = &mt('Select Course');
    if ($selecttype eq 'Community') {     if ($selecttype eq 'Community') {
        $linktext = &mt('Select Community');          $linktext = &mt('Select Community');
      } elsif ($selecttype eq 'Course/Community') {
          $linktext = &mt('Select Course/Community');
          $type = '';
    }     }
    return '<span class="LC_nobreak">'     return '<span class="LC_nobreak">'
          ."<a href='"           ."<a href='"
          .'javascript:opencrsbrowser("'.$form.'","'.$unameele           .'javascript:opencrsbrowser("'.$form.'","'.$unameele
          .'","'.$udomele.'","'.$desc.'","'.$extra_element           .'","'.$udomele.'","'.$desc.'","'.$extra_element
          .'","'.$multflag.'","'.$selecttype.'");'           .'","'.$multflag.'","'.$type.'","'.$typeelement.'");'
          ."'>".$linktext.'</a>'           ."'>".$linktext.'</a>'
          .'</span>';           .'</span>';
 }  }
Line 1109  sub general_help { Line 1170  sub general_help {
     my $helptopic='Student_Intro';      my $helptopic='Student_Intro';
     if ($env{'request.role'}=~/^(ca|au)/) {      if ($env{'request.role'}=~/^(ca|au)/) {
  $helptopic='Authoring_Intro';   $helptopic='Authoring_Intro';
     } elsif ($env{'request.role'}=~/^cc/) {      } elsif ($env{'request.role'}=~/^(cc|co)/) {
  $helptopic='Course_Coordination_Intro';   $helptopic='Course_Coordination_Intro';
     } elsif ($env{'request.role'}=~/^dc/) {      } elsif ($env{'request.role'}=~/^dc/) {
         $helptopic='Domain_Coordination_Intro';          $helptopic='Domain_Coordination_Intro';
Line 1881  sub select_level_form { Line 1942  sub select_level_form {
   
 =pod  =pod
   
 =item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc,$onchange)  =item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoms)
   
 Returns a string containing a <select name='$name' size='1'> form to   Returns a string containing a <select name='$name' size='1'> form to 
 allow a user to select the domain to preform an operation in.    allow a user to select the domain to preform an operation in.  
Line 1892  selected"); Line 1953  selected");
   
 If the $showdomdesc flag is set, the domain name is followed by the domain description.  If the $showdomdesc flag is set, the domain name is followed by the domain description.
   
 The optional $onchange argumnet specifies what should occur if the domain selector is changed, e.g., 'this.form.submit()' if the form is to be automatically submitted.    The optional $onchange argument specifies what should occur if the domain selector is changed, e.g., 'this.form.submit()' if the form is to be automatically submitted.
   
   The optional $incdoms is a reference to an array of domains which will be the only available options. 
   
 =cut  =cut
   
 #-------------------------------------------  #-------------------------------------------
 sub select_dom_form {  sub select_dom_form {
     my ($defdom,$name,$includeempty,$showdomdesc,$onchange) = @_;      my ($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoms) = @_;
     if ($onchange) {      if ($onchange) {
         $onchange = ' onchange="'.$onchange.'"';          $onchange = ' onchange="'.$onchange.'"';
     }      }
     my @domains = sort {lc($a) cmp lc($b)} (&Apache::lonnet::all_domains());      my @domains;
       if (ref($incdoms) eq 'ARRAY') {
           @domains = sort {lc($a) cmp lc($b)} (@{$incdoms});
       } else {
           @domains = sort {lc($a) cmp lc($b)} (&Apache::lonnet::all_domains());
       }
     if ($includeempty) { @domains=('',@domains); }      if ($includeempty) { @domains=('',@domains); }
     my $selectdomain = "<select name=\"$name\" size=\"1\"$onchange>\n";      my $selectdomain = "<select name=\"$name\" size=\"1\"$onchange>\n";
     foreach my $dom (@domains) {      foreach my $dom (@domains) {
Line 3670  sub findallcourses { Line 3738  sub findallcourses {
         if (!%roles) {          if (!%roles) {
             %roles = (              %roles = (
                        cc => 1,                         cc => 1,
                          co => 1,
                        in => 1,                         in => 1,
                        ep => 1,                         ep => 1,
                        ta => 1,                         ta => 1,
Line 4444  sub bodytag { Line 4513  sub bodytag {
   
     if ($env{'environment.remote'} eq 'off') {      if ($env{'environment.remote'} eq 'off') {
         # No Remote          # No Remote
         if ($env{'request.state'} eq 'construct') {          if ($no_nav_bar) { return $bodytag; } 
             $forcereg=1;  
         }  
   
     #    if ($env{'request.state'} eq 'construct') {          if ($env{'request.state'} eq 'construct') { $forcereg=1; }
     #        $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls  
     #    }  
   
         my $titletable = '<table id="LC_title_bar">'          #    if ($env{'request.state'} eq 'construct') {
                             ."<tr><td> $titleinfo $dc_info</td>"          #        $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls
                             .'</tr></table>';          #    }
   
         if ($no_nav_bar) {          $bodytag .= qq|<div id="LC_nav_bar">$name $role<br />
             $bodytag .= $titletable;              <em>$realm</em> $dc_info</div>| unless $env{'form.inhibitmenu'};
         } else {  
             $bodytag .= qq|<div id="LC_nav_bar">$name $role<br />  
                 <em>$realm</em> $dc_info</div>| unless $env{'form.inhibitmenu'};  
   
 #SD $titletable is obsolete          if (   $env{'form.inhibitmenu'} eq 'yes' 
 #SD            if ($env{'request.state'} eq 'construct') {              || $ENV{'REQUEST_URI'} eq '/adm/logout'
 #SD                $bodytag .= &Apache::lonmenu::menubuttons($forcereg,$titletable);              || $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) {
 #SD            } else {  
 #SD                $bodytag .= &Apache::lonmenu::menubuttons($forcereg).$titletable;  
 #SD            }  
                if (   $env{'form.inhibitmenu'} eq 'yes'   
                    || $ENV{'REQUEST_URI'} eq '/adm/logout'  
                    || $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) {  
                      
                    return $bodytag;  
                }  
   
                $bodytag .= Apache::lonhtmlcommon::scripttag(              return $bodytag;
                                 Apache::lonmenu::utilityfunctions(),  
                                 'start');  
                $bodytag .= Apache::lonmenu::primary_menu();  
                $bodytag .= Apache::lonmenu::secondary_menu();  
                #SD remove next line  
                #$bodytag .= Apache::lonmenu::menubuttons($forcereg);  
                $bodytag .= Apache::lonmenu::serverform();  
                $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end');   
                $bodytag .= Apache::lonmenu::innerregister($forcereg) if $forcereg;  
         }          }
   
           $bodytag .= Apache::lonhtmlcommon::scripttag(
               Apache::lonmenu::utilityfunctions(), 'start');
   
           $bodytag .= Apache::lonmenu::primary_menu();
   
           #don't show menus for public users
           if($env{'user.name'} ne 'public' && $env{'user.domain'} ne 'public'){
               $bodytag .= Apache::lonmenu::secondary_menu();
               $bodytag .= Apache::lonmenu::serverform();
               $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); 
               $bodytag .= Apache::lonmenu::innerregister($forcereg) if $forcereg;
           }else{
               # this is to seperate menu from content when there's no secondary
               # menu. Especially needed for public accessible ressources.
               $bodytag .= '<hr style="clear:both" />';
               $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); 
           }
   
           #SD testing
           #$bodytag .= Apache::lonmenu::menubuttons($forcereg);
         return $bodytag;          return $bodytag;
     }      }
   
Line 4884  table#LC_mainmenu td.LC_mainmenu_column Line 4949  table#LC_mainmenu td.LC_mainmenu_column
  clear:both;   clear:both;
  background: $sidebg;   background: $sidebg;
  border-bottom: 1px solid $lg_border_color;   border-bottom: 1px solid $lg_border_color;
  line-height: 32px;    line-height: 2.5em; 
    /* SD working here
    height: 2.5em;
    overflow: hidden; */
  margin: 0;   margin: 0;
  padding: 0;   padding: 0;
 }  }
Line 5808  ul#LC_secondary_menu a:hover, Line 5876  ul#LC_secondary_menu a:hover,
 .LC_FormSectionClearButton input:hover  .LC_FormSectionClearButton input:hover
 ul.LC_TabContent   li:hover a {  ul.LC_TabContent   li:hover a {
  color:#BF2317;   color:#BF2317;
         text-decoration:none;      text-decoration:none;
 }  }
   
 h1 {  h1 {
Line 6038  ol#LC_PathBreadcrumbs { Line 6106  ol#LC_PathBreadcrumbs {
  padding-left: 10px;   padding-left: 10px;
  margin: 0;   margin: 0;
  list-style-position: inside;   list-style-position: inside;
       /* SD working here
       white-space: nowrap; */
 }  }
   
 ol#LC_MenuBreadcrumbs li,   ol#LC_MenuBreadcrumbs li, 
Line 6045  ol#LC_PathBreadcrumbs li, Line 6115  ol#LC_PathBreadcrumbs li,
 ul.LC_CourseBreadcrumbs li {  ul.LC_CourseBreadcrumbs li {
     display: inline;      display: inline;
     white-space: nowrap;      white-space: nowrap;
       /* SD working here
       white-space: normal; */
 }  }
   
 ol#LC_MenuBreadcrumbs li a,  ol#LC_MenuBreadcrumbs li a,
Line 6834  sub get_users_function { Line 6906  sub get_users_function {
     if ($env{'request.role'}=~/^(st)/) {      if ($env{'request.role'}=~/^(st)/) {
         $function='student';          $function='student';
     }      }
     if ($env{'request.role'}=~/^(cc|in|ta|ep)/) {      if ($env{'request.role'}=~/^(cc|co|in|ta|ep)/) {
         $function='coordinator';          $function='coordinator';
     }      }
     if ($env{'request.role'}=~/^(su|dc|ad|li)/) {      if ($env{'request.role'}=~/^(su|dc|ad|li)/) {
Line 6905  sub check_user_status { Line 6977  sub check_user_status {
     my $active_chk = 'none';      my $active_chk = 'none';
     my $now = time;      my $now = time;
     if (@uroles > 0) {      if (@uroles > 0) {
         if (($role eq 'cc') || ($sec eq '') || (!defined($sec))) {          if (($role eq 'cc') || ($role eq 'co') || ($sec eq '') || (!defined($sec))) {
             $srchstr = '/'.$cdom.'/'.$crs.'_'.$role;              $srchstr = '/'.$cdom.'/'.$crs.'_'.$role;
         } else {          } else {
             $srchstr = '/'.$cdom.'/'.$crs.'/'.$sec.'_'.$role;              $srchstr = '/'.$cdom.'/'.$crs.'/'.$sec.'_'.$role;
Line 9857  sub check_clone { Line 9929  sub check_clone {
     my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom);      my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom);
     my $clonemsg;      my $clonemsg;
     my $can_clone = 0;      my $can_clone = 0;
       my $lctype = lc($args->{'type'});
       if ($lctype ne 'community') {
           $lctype = 'course';
       }
     if ($clonehome eq 'no_host') {      if ($clonehome eq 'no_host') {
         $clonemsg = &mt('No new course created.').$linefeed.&mt('A new course could not be cloned from the specified original - [_1] - because it is a non-existent course.',$args->{'clonecourse'}.':'.$args->{'clonedomain'});               if ($args->{'type'} eq 'Community') {
               $clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a non-existent community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'});
           } else {
               $clonemsg = &mt('No new course created.').$linefeed.&mt('A new course could not be cloned from the specified original - [_1] - because it is a non-existent course.',$args->{'clonecourse'}.':'.$args->{'clonedomain'});
           }     
     } else {      } else {
  my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1});   my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1});
           if ($args->{'type'} eq 'Community') {
               if ($clonedesc{'type'} ne 'Community') {
                    $clonemsg = &mt('No new community created.').$linefeed.&mt('A new community could not be cloned from the specified original - [_1] - because it is a course not a community.',$args->{'clonecourse'}.':'.$args->{'clonedomain'});
                   return ($can_clone, $clonemsg, $cloneid, $clonehome);
               }
           }
  if (($env{'request.role.domain'} eq $args->{'clonedomain'}) &&    if (($env{'request.role.domain'} eq $args->{'clonedomain'}) && 
             (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) {              (&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) {
     $can_clone = 1;      $can_clone = 1;
Line 9874  sub check_clone { Line 9959  sub check_clone {
             } elsif (grep(/^\*\:\Q$args->{'ccdomain'}\E$/,@cloners)) {              } elsif (grep(/^\*\:\Q$args->{'ccdomain'}\E$/,@cloners)) {
                 $can_clone = 1;                  $can_clone = 1;
             } else {              } else {
                   my $ccrole = 'cc';
                   if ($args->{'type'} eq 'Community') {
                       $ccrole = 'co';
                   }
         my %roleshash =          my %roleshash =
     &Apache::lonnet::get_my_roles($args->{'ccuname'},      &Apache::lonnet::get_my_roles($args->{'ccuname'},
  $args->{'ccdomain'},   $args->{'ccdomain'},
                                          'userroles',['active'],['cc'],                                           'userroles',['active'],[$ccrole],
  [$args->{'clonedomain'}]);   [$args->{'clonedomain'}]);
         if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':cc'}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) {          if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) {
     $can_clone = 1;      $can_clone = 1;
         } else {          } else {
                     $clonemsg = &mt('No new course created.').$linefeed.&mt('The new course could not be cloned from the existing course because the new course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'});                      if ($args->{'type'} eq 'Community') {
                           $clonemsg = &mt('No new community created.').$linefeed.&mt('The new community could not be cloned from the existing community because the new community owner ([_1]) does not have cloning rights in the existing community ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'});
                       } else {
                           $clonemsg = &mt('No new course created.').$linefeed.&mt('The new course could not be cloned from the existing course because the new course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'});
                       }
         }          }
     }      }
         }          }
Line 10244  sub group_term { Line 10337  sub group_term {
     return $names{$crstype};      return $names{$crstype};
 }  }
   
   sub course_types {
       my @types = ('official','unofficial','community');
       my %typename = (
                            official   => 'Official course',
                            unofficial => 'Unofficial course',
                            community  => 'Community',
                      );
       return (\@types,\%typename);
   }
   
 sub icon {  sub icon {
     my ($file)=@_;      my ($file)=@_;
     my $curfext = lc((split(/\./,$file))[-1]);      my $curfext = lc((split(/\./,$file))[-1]);

Removed from v.1.901  
changed lines
  Added in v.1.910


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