version 1.692.4.23, 2010/01/19 16:20:38
|
version 1.692.4.34, 2010/04/03 21:58:48
|
Line 515 sub coursebrowser_javascript {
|
Line 515 sub coursebrowser_javascript {
|
else { |
else { |
if (formname == 'portform') { |
if (formname == 'portform') { |
url += '&setroles='+extra_element; |
url += '&setroles='+extra_element; |
|
} else { |
|
if (formname == 'rules') { |
|
url += '&fixeddom='+extra_element; |
|
} |
} |
} |
} |
} |
} |
} |
Line 1878 sub select_form {
|
Line 1882 sub select_form {
|
$selectform.= |
$selectform.= |
'<option value="'.&HTML::Entities::encode($key,'"<>&').'" '. |
'<option value="'.&HTML::Entities::encode($key,'"<>&').'" '. |
($key eq $def ? 'selected="selected" ' : ''). |
($key eq $def ? 'selected="selected" ' : ''). |
">".&mt($hash{$key})."</option>\n"; |
">".$hash{$key}."</option>\n"; |
} |
} |
$selectform.="</select>"; |
$selectform.="</select>"; |
return $selectform; |
return $selectform; |
Line 4190 sub get_domainconf {
|
Line 4194 sub get_domainconf {
|
if (defined($cached)) { return %{$result}; } |
if (defined($cached)) { return %{$result}; } |
|
|
my %domconfig = &Apache::lonnet::get_dom('configuration', |
my %domconfig = &Apache::lonnet::get_dom('configuration', |
['login','rolecolors'],$udom); |
['login','rolecolors','loginvia'],$udom); |
my (%designhash,%legacy); |
my (%designhash,%legacy); |
if (keys(%domconfig) > 0) { |
if (keys(%domconfig) > 0) { |
if (ref($domconfig{'login'}) eq 'HASH') { |
if (ref($domconfig{'login'}) eq 'HASH') { |
if (keys(%{$domconfig{'login'}})) { |
if (keys(%{$domconfig{'login'}})) { |
foreach my $key (keys(%{$domconfig{'login'}})) { |
foreach my $key (keys(%{$domconfig{'login'}})) { |
if (ref($domconfig{'login'}{$key}) eq 'HASH') { |
if (ref($domconfig{'login'}{$key}) eq 'HASH') { |
foreach my $img (keys(%{$domconfig{'login'}{$key}})) { |
if ($key eq 'loginvia') { |
$designhash{$udom.'.login.'.$key.'_'.$img} = |
if (ref($domconfig{'login'}{'loginvia'}) eq 'HASH') { |
$domconfig{'login'}{$key}{$img}; |
my @ids = &Apache::lonnet::current_machine_ids(); |
|
foreach my $hostname (@ids) { |
|
if (ref($domconfig{'login'}{'loginvia'}{$hostname}) eq 'HASH') { |
|
if ($domconfig{'login'}{'loginvia'}{$hostname}{'server'}) { |
|
my $server = $domconfig{'login'}{'loginvia'}{$hostname}{'server'}; |
|
$designhash{$udom.'.login.loginvia'} = $server; |
|
if ($domconfig{'login'}{'loginvia'}{$hostname}{'serverpath'} eq 'custom') { |
|
|
|
$designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'custompath'}; |
|
} else { |
|
$designhash{$udom.'.login.loginvia_'.$hostname} = $server.':'.$domconfig{'login'}{'loginvia'}{$hostname}{'serverpath'}; |
|
} |
|
if ($domconfig{'login'}{'loginvia'}{$hostname}{'exempt'}) { |
|
$designhash{$udom.'.login.loginvia_exempt_'.$hostname} = $domconfig{'login'}{'loginvia'}{$hostname}{'exempt'}; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
} else { |
|
foreach my $img (keys(%{$domconfig{'login'}{$key}})) { |
|
$designhash{$udom.'.login.'.$key.'_'.$img} = |
|
$domconfig{'login'}{$key}{$img}; |
|
} |
} |
} |
} else { |
} else { |
$designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key}; |
$designhash{$udom.'.login.'.$key}=$domconfig{'login'}{$key}; |
Line 4226 sub get_domainconf {
|
Line 4253 sub get_domainconf {
|
} else { |
} else { |
$legacy{'rolecolors'} = 1; |
$legacy{'rolecolors'} = 1; |
} |
} |
|
if (ref($domconfig{'autoenroll'}) eq 'HASH') { |
|
if ($domconfig{'autoenroll'}{'co-owners'}) { |
|
$designhash{$udom.'.autoassign.co-owners'}=$domconfig{'autoenroll'}{'co-owners'}; |
|
} |
|
} |
if (keys(%legacy) > 0) { |
if (keys(%legacy) > 0) { |
my %legacyhash = &get_legacy_domconf($udom); |
my %legacyhash = &get_legacy_domconf($udom); |
foreach my $item (keys(%legacyhash)) { |
foreach my $item (keys(%legacyhash)) { |
Line 5075 table.LC_data_table tr td.LC_leftcol_hea
|
Line 5107 table.LC_data_table tr td.LC_leftcol_hea
|
} |
} |
table.LC_data_table tr.LC_empty_row td, |
table.LC_data_table tr.LC_empty_row td, |
table.LC_nested tr.LC_empty_row td { |
table.LC_nested tr.LC_empty_row td { |
background-color: #FFFFFF; |
|
font-weight: bold; |
font-weight: bold; |
font-style: italic; |
font-style: italic; |
text-align: center; |
text-align: center; |
padding: 8px; |
padding: 8px; |
} |
} |
|
|
|
table.LC_data_table tr.LC_empty_row td { |
|
background-color: $tabbg; |
|
} |
|
|
|
table.LC_nested tr.LC_empty_row td { |
|
background-color: #FFFFFF; |
|
} |
|
|
table.LC_nested tr.LC_empty_row td { |
table.LC_nested tr.LC_empty_row td { |
padding: 4ex |
padding: 4ex |
} |
} |
Line 5246 table#LC_browser tr.LC_browser_folder {
|
Line 5286 table#LC_browser tr.LC_browser_folder {
|
background: #CCCCFF; |
background: #CCCCFF; |
} |
} |
|
|
|
table.LC_data_table tr > td.LC_browser_file, |
|
table.LC_data_table tr > td.LC_browser_file_published { |
|
background: #AAEE77; |
|
} |
|
|
|
table.LC_data_table tr > td.LC_browser_file_locked, |
|
table.LC_data_table tr > td.LC_browser_file_unpublished { |
|
background: #FFAA99; |
|
} |
|
|
|
table.LC_data_table tr > td.LC_browser_file_obsolete { |
|
background: #888888; |
|
} |
|
|
|
table.LC_data_table tr > td.LC_browser_file_modified, |
|
table.LC_data_table tr > td.LC_browser_file_metamodified { |
|
background: #F8F866; |
|
} |
|
|
|
table.LC_data_table tr.LC_browser_folder > td { |
|
background: #E0E8FF; |
|
} |
|
|
table.LC_data_table tr > td.LC_roles_is { |
table.LC_data_table tr > td.LC_roles_is { |
/* background: #77FF77; */ |
/* background: #77FF77; */ |
} |
} |
Line 5584 table.LC_prior_match tr td {
|
Line 5647 table.LC_prior_match tr td {
|
border: 1px solid #000000; |
border: 1px solid #000000; |
} |
} |
|
|
span.LC_nobreak { |
.LC_nobreak { |
white-space: nowrap; |
white-space: nowrap; |
} |
} |
|
|
Line 6373 Returns either 'student','coordinator','
|
Line 6436 Returns either 'student','coordinator','
|
############################################### |
############################################### |
sub get_users_function { |
sub get_users_function { |
my $function = 'student'; |
my $function = 'student'; |
if ($env{'request.role'}=~/^(cc|co|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 8994 sub extract_categories {
|
Line 9057 sub extract_categories {
|
my $trailstr; |
my $trailstr; |
if ($name eq 'instcode') { |
if ($name eq 'instcode') { |
$trailstr = &mt('Official courses (with institutional codes)'); |
$trailstr = &mt('Official courses (with institutional codes)'); |
|
} elsif ($name eq 'communities') { |
|
$trailstr = &mt('Communities'); |
} else { |
} else { |
$trailstr = $name; |
$trailstr = $name; |
} |
} |
Line 9104 Inputs:
|
Line 9169 Inputs:
|
cathash - reference to hash of categories defined for the domain (from |
cathash - reference to hash of categories defined for the domain (from |
configuration.db) |
configuration.db) |
|
|
currcat - scalar with an & separated list of categories assigned to a course. |
currcat - scalar with an & separated list of categories assigned to a course. |
|
|
|
type - scalar contains course type (Course or Community). |
|
|
Returns: $output (markup to be displayed) |
Returns: $output (markup to be displayed) |
|
|
=cut |
=cut |
|
|
sub assign_categories_table { |
sub assign_categories_table { |
my ($cathash,$currcat) = @_; |
my ($cathash,$currcat,$type) = @_; |
my $output; |
my $output; |
if (ref($cathash) eq 'HASH') { |
if (ref($cathash) eq 'HASH') { |
my (@cats,@trails,%allitems,%idx,@jsarray,@path,$maxdepth); |
my (@cats,@trails,%allitems,%idx,@jsarray,@path,$maxdepth); |
Line 9120 sub assign_categories_table {
|
Line 9187 sub assign_categories_table {
|
if (@cats > 0) { |
if (@cats > 0) { |
my $itemcount = 0; |
my $itemcount = 0; |
if (ref($cats[0]) eq 'ARRAY') { |
if (ref($cats[0]) eq 'ARRAY') { |
$output = &Apache::loncommon::start_data_table(); |
|
my @currcategories; |
my @currcategories; |
if ($currcat ne '') { |
if ($currcat ne '') { |
@currcategories = split('&',$currcat); |
@currcategories = split('&',$currcat); |
} |
} |
|
my $table; |
for (my $i=0; $i<@{$cats[0]}; $i++) { |
for (my $i=0; $i<@{$cats[0]}; $i++) { |
my $parent = $cats[0][$i]; |
my $parent = $cats[0][$i]; |
my $css_class = $itemcount%2?' class="LC_odd_row"':''; |
|
next if ($parent eq 'instcode'); |
next if ($parent eq 'instcode'); |
|
if ($type eq 'Community') { |
|
next unless ($parent eq 'communities'); |
|
} else { |
|
next if ($parent eq 'communities'); |
|
} |
|
my $css_class = $itemcount%2?' class="LC_odd_row"':''; |
my $item = &escape($parent).'::0'; |
my $item = &escape($parent).'::0'; |
my $checked = ''; |
my $checked = ''; |
if (@currcategories > 0) { |
if (@currcategories > 0) { |
Line 9136 sub assign_categories_table {
|
Line 9208 sub assign_categories_table {
|
$checked = ' checked="checked" '; |
$checked = ' checked="checked" '; |
} |
} |
} |
} |
$output .= '<tr '.$css_class.'><td><span class="LC_nobreak">'. |
my $parent_title = $parent; |
'<input type="checkbox" name="usecategory" value="'. |
if ($parent eq 'communities') { |
$item.'"'.$checked.' />'.$parent.'</span>'. |
$parent_title = &mt('Communities'); |
'<input type="hidden" name="catname" value="'.$parent.'" /></td>'; |
} |
|
$table .= '<tr '.$css_class.'><td><span class="LC_nobreak">'. |
|
'<input type="checkbox" name="usecategory" value="'. |
|
$item.'"'.$checked.' />'.$parent_title.'</span>'. |
|
'<input type="hidden" name="catname" value="'.$parent.'" /></td>'; |
my $depth = 1; |
my $depth = 1; |
push(@path,$parent); |
push(@path,$parent); |
$output .= &assign_category_rows($itemcount,\@cats,$depth,$parent,\@path,\@currcategories); |
$table .= &assign_category_rows($itemcount,\@cats,$depth,$parent,\@path,\@currcategories); |
pop(@path); |
pop(@path); |
$output .= '</tr><tr><td colspan="'.$maxdepth.'" class="LC_row_separator"></td></tr>'; |
$table .= '</tr><tr><td colspan="'.$maxdepth.'" class="LC_row_separator"></td></tr>'; |
$itemcount ++; |
$itemcount ++; |
} |
} |
$output .= &Apache::loncommon::end_data_table(); |
if ($itemcount) { |
|
$output = &Apache::loncommon::start_data_table(). |
|
$table. |
|
&Apache::loncommon::end_data_table(); |
|
} |
} |
} |
} |
} |
} |
} |
Line 9392 sub check_clone {
|
Line 9472 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'}); |
my $lctype = lc($args->{'crstype'}); |
if ($lctype ne 'community') { |
if ($lctype ne 'community') { |
$lctype = 'course'; |
$lctype = 'course'; |
} |
} |
if ($clonehome eq 'no_host') { |
if ($clonehome eq 'no_host') { |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} 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'}); |
$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 { |
} 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'}); |
$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 ($args->{'crstype'} eq 'Community') { |
if ($clonedesc{'type'} ne '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'}); |
$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); |
return ($can_clone, $clonemsg, $cloneid, $clonehome); |
Line 9423 sub check_clone {
|
Line 9503 sub check_clone {
|
$can_clone = 1; |
$can_clone = 1; |
} else { |
} else { |
my $ccrole = 'cc'; |
my $ccrole = 'cc'; |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} eq 'Community') { |
$ccrole = 'co'; |
$ccrole = 'co'; |
} |
} |
my %roleshash = |
my %roleshash = |
Line 9433 sub check_clone {
|
Line 9513 sub check_clone {
|
[$args->{'clonedomain'}]); |
[$args->{'clonedomain'}]); |
if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':'.$ccrole}) || (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; |
|
} elsif (&Apache::lonnet::is_course_owner($args->{'clonedomain'},$args->{'clonecourse'},$args->{'ccuname'},$args->{'ccdomain'})) { |
|
$can_clone = 1; |
} else { |
} else { |
if ($args->{'type'} eq 'Community') { |
if ($args->{'crstype'} 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'}); |
$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 { |
} 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'}); |
$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 9517 sub construct_course {
|
Line 9599 sub construct_course {
|
$cenv{'url'}=$oldcenv{'url'}; |
$cenv{'url'}=$oldcenv{'url'}; |
# Restore title |
# Restore title |
$cenv{'description'}=$oldcenv{'description'}; |
$cenv{'description'}=$oldcenv{'description'}; |
|
# Restore creation date, creator and creation context. |
|
$cenv{'internal.created'}=$oldcenv{'internal.created'}; |
|
$cenv{'internal.creator'}=$oldcenv{'internal.creator'}; |
|
$cenv{'internal.creationcontext'}=$oldcenv{'internal.creationcontext'}; |
# Mark as cloned |
# Mark as cloned |
$cenv{'clonedfrom'}=$cloneid; |
$cenv{'clonedfrom'}=$cloneid; |
# Need to clone grading mode |
# Need to clone grading mode |