Diff for /loncom/interface/loncommon.pm between versions 1.892 and 1.909

version 1.892, 2009/09/27 15:27:26 version 1.909, 2009/11/04 14:08:36
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 domainfilter = getDomainFromSelectbox(formname,udom);          var domainfilter = getDomainFromSelectbox(formname,udom);
         if (domainfilter != null) {          if (domainfilter != null) {
            if (domainfilter != '') {             if (domainfilter != '') {
Line 519  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 527  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 547  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 660  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 694  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 1108  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 2954  sub messagewrapper { Line 3016  sub messagewrapper {
 sub noteswrapper {  sub noteswrapper {
     my ($link,$un,$do)=@_;      my ($link,$un,$do)=@_;
     return       return 
 "<a href='/adm/email?recordftf=retrieve&recname=$un&recdom=$do'>$link</a>";  "<a href='/adm/email?recordftf=retrieve&amp;recname=$un&amp;recdom=$do'>$link</a>";
 }  }
   
 # ------------------------------------------------------------- Aboutme Wrapper  # ------------------------------------------------------------- Aboutme Wrapper
Line 3669  sub findallcourses { Line 3731  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 4046  sub determinedomain { Line 4109  sub determinedomain {
     my $domain=shift;      my $domain=shift;
     if (! $domain) {      if (! $domain) {
         # Determine domain if we have not been given one          # Determine domain if we have not been given one
         $domain = $Apache::lonnet::perlvar{'lonDefDomain'};          $domain = &Apache::lonnet::default_login_domain();
         if ($env{'user.domain'}) { $domain=$env{'user.domain'}; }          if ($env{'user.domain'}) { $domain=$env{'user.domain'}; }
         if ($env{'request.role.domain'}) {           if ($env{'request.role.domain'}) { 
             $domain=$env{'request.role.domain'};               $domain=$env{'request.role.domain'}; 
Line 4396  sub bodytag { Line 4459  sub bodytag {
         if ($env{'request.role'} !~ /^cr/) {          if ($env{'request.role'} !~ /^cr/) {
             $role = &Apache::lonnet::plaintext($role,&course_type());              $role = &Apache::lonnet::plaintext($role,&course_type());
         }          }
           if ($env{'request.course.sec'}) {
               $role .= ('&nbsp;'x2).'-&nbsp;'.&mt('section:').'&nbsp;'.$env{'request.course.sec'};
           }   
  $realm = $env{'course.'.$env{'request.course.id'}.'.description'};   $realm = $env{'course.'.$env{'request.course.id'}.'.description'};
     } else {      } else {
         $role = &Apache::lonnet::plaintext($role);          $role = &Apache::lonnet::plaintext($role);
Line 4435  sub bodytag { Line 4501  sub bodytag {
         $dc_info = '('.$dc_info.')';          $dc_info = '('.$dc_info.')';
     }      }
   
     $role = "($role)" if $role;      $role = '<span class="LC_nobreak">('.$role.')</span>' if $role;
     &get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']);      &get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']);
   
     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  
 #    }          #    if ($env{'request.state'} eq 'construct') {
           #        $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls
         my $titletable = '<table id="LC_title_bar">'          #    }
                         ."<tr><td> $titleinfo $dc_info</td>"  
                         .'</tr></table>';  
   
  if ($no_nav_bar) {  
     $bodytag .= $titletable;  
  } else {  
         $bodytag .= qq|<div id="LC_nav_bar">$name $role<br />          $bodytag .= qq|<div id="LC_nav_bar">$name $role<br />
             <em>$realm</em> $dc_info</div>| unless $env{'form.inhibitmenu'};              <em>$realm</em> $dc_info</div>| unless $env{'form.inhibitmenu'};
   
     if ($env{'request.state'} eq 'construct') {          if (   $env{'form.inhibitmenu'} eq 'yes' 
                 $bodytag .= &Apache::lonmenu::menubuttons($forcereg,$titletable);              || $ENV{'REQUEST_URI'} eq '/adm/logout'
             } else {              || $env{'request.noversionuri'} =~ m{^/res/adm/pages/}) {
                 $bodytag .= &Apache::lonmenu::menubuttons($forcereg).$titletable;  
             }              return $bodytag;
         }          }
   
           $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 4482  sub bodytag { Line 4562  sub bodytag {
        :'<a href="/adm/remote?action=collapse" target="_top">'.&mt('Switch to Inline Menu Mode').'</a>');         :'<a href="/adm/remote?action=collapse" target="_top">'.&mt('Switch to Inline Menu Mode').'</a>');
     $bodytag .= qq|<div id="LC_nav_bar">$name $role      $bodytag .= qq|<div id="LC_nav_bar">$name $role
             <em>$realm</em> $dc_info </div>              <em>$realm</em> $dc_info </div>
             <ol class="LC_smallMenu LC_right">              <ol class="LC_primary_menu LC_right">
                 <li>$menu</li>                  <li>$menu</li>
             </ol>| unless $env{'form.inhibitmenu'};              </ol>| unless $env{'form.inhibitmenu'};
     #      #
Line 4862  table#LC_mainmenu td.LC_mainmenu_column Line 4942  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 4971  table.LC_data_table tr.LC_odd_row > td, Line 5054  table.LC_data_table tr.LC_odd_row > td,
 table.LC_pick_box tr > td.LC_odd_row {  table.LC_pick_box tr > td.LC_odd_row {
   background-color: $data_table_light;    background-color: $data_table_light;
   padding: 2px;    padding: 2px;
     vertical-align: top;
 }  }
   
 table.LC_data_table tr.LC_even_row > td,  table.LC_data_table tr.LC_even_row > td,
 table.LC_pick_box tr > td.LC_even_row {  table.LC_pick_box tr > td.LC_even_row {
   background-color: $data_table_dark;    background-color: $data_table_dark;
   padding: 2px;    padding: 2px;
     vertical-align: top;
 }  }
   
 table.LC_data_table tr.LC_data_table_highlight td {  table.LC_data_table tr.LC_data_table_highlight td {
Line 5123  table.LC_mail_list tr.LC_mail_other:hove Line 5208  table.LC_mail_list tr.LC_mail_other:hove
   
 table.LC_data_table tr > td.LC_browser_file,  table.LC_data_table tr > td.LC_browser_file,
 table.LC_data_table tr > td.LC_browser_file_published {  table.LC_data_table tr > td.LC_browser_file_published {
   background: #CCFF88;    background: #AAEE77;
 }  }
   
 table.LC_data_table tr > td.LC_browser_file_locked,  table.LC_data_table tr > td.LC_browser_file_locked,
Line 5132  table.LC_data_table tr > td.LC_browser_f Line 5217  table.LC_data_table tr > td.LC_browser_f
 }  }
   
 table.LC_data_table tr > td.LC_browser_file_obsolete {  table.LC_data_table tr > td.LC_browser_file_obsolete {
   background: #AAAAAA;    background: #888888;
 }  }
   
 table.LC_data_table tr > td.LC_browser_file_modified,  table.LC_data_table tr > td.LC_browser_file_modified,
 table.LC_data_table tr > td.LC_browser_file_metamodified {  table.LC_data_table tr > td.LC_browser_file_metamodified {
   background: #FFFF77;    background: #F8F866;
 }  }
   
 table.LC_data_table tr.LC_browser_folder > td {  table.LC_data_table tr.LC_browser_folder > td {
   background: #CCCCFF;    background: #E0E8FF;
 }  }
   
 table.LC_data_table tr > td.LC_roles_is {  table.LC_data_table tr > td.LC_roles_is {
Line 5283  table.LC_pick_box { Line 5368  table.LC_pick_box {
 table.LC_pick_box td.LC_pick_box_title {  table.LC_pick_box td.LC_pick_box_title {
   background: $sidebg;    background: $sidebg;
   font-weight: bold;    font-weight: bold;
   text-align: right;    text-align: left;
   vertical-align: top;    vertical-align: top;
   width: 184px;    width: 184px;
   padding: 8px;    padding: 8px;
Line 5321  table.LC_pick_box td.LC_oddrow_value { Line 5406  table.LC_pick_box td.LC_oddrow_value {
   background-color: $data_table_light;    background-color: $data_table_light;
 }  }
   
 table.LC_helpform_receipt {  
   width: 620px;  
   border-collapse: separate;  
   background: white;  
   border: 1px solid black;  
   border-spacing: 1px;  
 }  
   
 table.LC_helpform_receipt td.LC_pick_box_title {  
   background: $tabbg;  
   font-weight: bold;  
   text-align: right;  
   width: 184px;  
   padding: 8px;  
 }  
   
 table.LC_helpform_receipt td.LC_evenrow_value {  
   text-align: left;  
   padding: 8px;  
   background-color: $data_table_light;  
 }  
   
 table.LC_helpform_receipt td.LC_oddrow_value {  
   text-align: left;  
   padding: 8px;  
   background-color: $data_table_light;  
 }  
   
 table.LC_helpform_receipt td.LC_pick_box_separator {  
   padding: 0;  
   height: 1px;  
   background: black;  
 }  
   
 span.LC_helpform_receipt_cat {  span.LC_helpform_receipt_cat {
   font-weight: bold;    font-weight: bold;
 }  }
Line 5811  div.LC_createcourse { Line 5862  div.LC_createcourse {
 # --------------------------*/  # --------------------------*/
   
 a:hover,  a:hover,
 ol.LC_smallMenu a:hover,  ol.LC_primary_menu a:hover,
 ol#LC_MenuBreadcrumbs a:hover,  ol#LC_MenuBreadcrumbs a:hover,
 ol#LC_PathBreadcrumbs a:hover,  ol#LC_PathBreadcrumbs a:hover,
 ul#LC_TabMainMenuContent a:hover,  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 5891  fieldset > legend { Line 5942  fieldset > legend {
     font-style: normal;      font-style: normal;
 }  }
   
 ol.LC_smallMenu {  ol.LC_primary_menu {
     float: right;      float: right;
     margin: 0.2em 0 0 0;      margin: 0.2em 0 0 0;
 }  }
Line 5900  ol#LC_PathBreadcrumbs { Line 5951  ol#LC_PathBreadcrumbs {
  margin: 0;   margin: 0;
 }  }
   
 ol.LC_smallMenu li {  ol.LC_primary_menu li {
  display: inline;   display: inline;
  padding: 5px 5px 0 10px;   padding: 5px 5px 0 10px;
  vertical-align: top;   vertical-align: top;
 }  }
   
 ol.LC_smallMenu li img {  ol.LC_primary_menu li img {
  vertical-align: bottom;   vertical-align: bottom;
 }  }
   
 ol.LC_smallMenu a {  ol.LC_primary_menu a {
  font-size: 90%;   font-size: 90%;
  color: RGB(80, 80, 80);   color: RGB(80, 80, 80);
  text-decoration: none;   text-decoration: none;
 }  }
   
 ul#LC_TabMainMenuContent {  ul#LC_secondary_menu {
     clear: both;      clear: both;
     color: $fontmenu;      color: $fontmenu;
     background: $tabbg;      background: $tabbg;
Line 5926  ul#LC_TabMainMenuContent { Line 5977  ul#LC_TabMainMenuContent {
     width: 100%;      width: 100%;
 }  }
   
 ul#LC_TabMainMenuContent li {  ul#LC_secondary_menu li {
     font-weight: bold;      font-weight: bold;
     line-height: 1.8em;      line-height: 1.8em;
     padding: 0 0.8em;       padding: 0 0.8em; 
Line 5949  ul.LC_TabContentBigger li { Line 6000  ul.LC_TabContentBigger li {
  float:left;   float:left;
 }  }
   
 ul#LC_TabMainMenuContent li a {  ul#LC_secondary_menu li a {
     color: $fontmenu;      color: $fontmenu;
  text-decoration: none;   text-decoration: none;
 }  }
Line 6048  ol#LC_PathBreadcrumbs { Line 6099  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 6055  ol#LC_PathBreadcrumbs li, Line 6108  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 6738  sub simple_error_page { Line 6793  sub simple_error_page {
  my ($add_class) = @_;   my ($add_class) = @_;
  $row_count[0]++;   $row_count[0]++;
  my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row';   my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row';
  $css_class = (join(' ',$css_class,$add_class));   $css_class = (join(' ',$css_class,$add_class)) unless ($add_class eq '');
  return  '<tr class="'.$css_class.'">'."\n";;   return  '<tr class="'.$css_class.'">'."\n";;
     }      }
           
     sub continue_data_table_row {      sub continue_data_table_row {
  my ($add_class) = @_;   my ($add_class) = @_;
  my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row';   my $css_class = ($row_count[0] % 2)?'LC_odd_row':'LC_even_row';
  $css_class = (join(' ',$css_class,$add_class));   $css_class = (join(' ',$css_class,$add_class)) unless ($add_class eq '');;
  return  '<tr class="'.$css_class.'">'."\n";;   return  '<tr class="'.$css_class.'">'."\n";;
     }      }
   
Line 6844  sub get_users_function { Line 6899  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 6915  sub check_user_status { Line 6970  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 9867  sub check_clone { Line 9922  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 9884  sub check_clone { Line 9952  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 10254  sub group_term { Line 10330  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.892  
changed lines
  Added in v.1.909


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