version 1.89, 2016/04/04 01:09:47
|
version 1.95, 2018/02/01 04:51:02
|
Line 57 sub handler {
|
Line 57 sub handler {
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['sortby','showdom']); |
['sortby','showdom']); |
|
|
my $codedom = &Apache::lonnet::default_login_domain(); |
my $serverdefdom = &Apache::lonnet::default_login_domain(); |
|
my $codedom = $serverdefdom; |
|
|
if (($env{'user.domain'} ne '') && ($env{'user.domain'} ne 'public')) { |
if (($env{'user.domain'} ne '') && ($env{'user.domain'} ne 'public')) { |
$codedom = $env{'user.domain'}; |
$codedom = $env{'user.domain'}; |
Line 74 sub handler {
|
Line 75 sub handler {
|
$env{'form.showdom'} = ''; |
$env{'form.showdom'} = ''; |
} |
} |
} |
} |
my $domdesc = &Apache::lonnet::domain($codedom,'description'); |
my $domdesc = &Apache::lonnet::domain($serverdefdom,'description'); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
|
|
unless (($serverdefdom eq $codedom) || |
|
(&Apache::lonnet::will_trust('catalog',$serverdefdom,$codedom))) { |
|
my $serverdomdesc = &Apache::lonnet::domain($serverdefdom,'description'); |
|
$r->print(&Apache::loncommon::start_page('Course/Community Catalog')); |
|
&Apache::lonhtmlcommon::add_breadcrumb |
|
({href=>"/adm/coursecatalog", |
|
text=>"Course/Community Catalog"}); |
|
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Course/Community Catalog')); |
|
$r->print('<div>'.&mt('Access to catalog LON-CAPA courses/communities unavailable for: "[_1]" on servers run by: "[_2]".', |
|
$domdesc,$serverdomdesc).'</div>'); |
|
$r->print(&Apache::loncommon::end_page()); |
|
return OK; |
|
} |
my %domconfig = |
my %domconfig = |
&Apache::lonnet::get_dom('configuration',['coursecategories'],$codedom); |
&Apache::lonnet::get_dom('configuration',['coursecategories'],$codedom); |
my $knownuser = &user_is_known(); |
my $knownuser = &user_is_known(); |
my $canviewall = &canview_all(); |
my $canviewall = &canview_all($knownuser,$codedom); |
|
|
my ($cathash,$cattype); |
my ($cathash,$cattype); |
if (ref($domconfig{'coursecategories'}) eq 'HASH') { |
if (ref($domconfig{'coursecategories'}) eq 'HASH') { |
Line 125 sub handler {
|
Line 139 sub handler {
|
} |
} |
my $js = '<script type="text/javascript">'."\n". |
my $js = '<script type="text/javascript">'."\n". |
'// <![CDATA['."\n". |
'// <![CDATA['."\n". |
&courselink_javascript()."\n". |
&courselink_javascript($r)."\n". |
'// ]]>'."\n". |
'// ]]>'."\n". |
'</script>'."\n"; |
'</script>'."\n"; |
$r->print(&Apache::loncommon::start_page('Search for a Course/Community',$js)); |
$r->print(&Apache::loncommon::start_page('Search for a Course/Community',$js)); |
Line 176 sub handler {
|
Line 190 sub handler {
|
$courseinfo{$codedom.'_'.$cnum}{$item}); |
$courseinfo{$codedom.'_'.$cnum}{$item}); |
if ($item eq 'title') { |
if ($item eq 'title') { |
if ($courseinfo{$codedom.'_'.$cnum}{'showsyllabus'}) { |
if ($courseinfo{$codedom.'_'.$cnum}{'showsyllabus'}) { |
|
my $usehttp = 0; |
|
if (($ENV{'SERVER_PORT'} == 443) && ($courseinfo{$codedom.'_'.$cnum}{'extsyllplain'})) { |
|
$usehttp = 1; |
|
} |
$r->print(' <font size="-2">'. |
$r->print(' <font size="-2">'. |
'<a href="javascript:ToSyllabus('."'$codedom','$cnum'".')">'. |
'<a href="javascript:ToSyllabus('."'$codedom','$cnum','$usehttp'".')">'. |
&mt('Syllabus').'</a></font>'); |
&mt('Syllabus').'</a></font>'); |
} |
} |
} |
} |
Line 250 function setCourseId(caller) {
|
Line 268 function setCourseId(caller) {
|
} |
} |
|
|
ENDSCRIPT |
ENDSCRIPT |
$catjs .= &courselink_javascript(); |
$catjs .= &courselink_javascript($r); |
if (&user_is_dc($codedom) || $canviewall) { |
if (&user_is_dc($codedom) || $canviewall) { |
$catjs .= <<ENDTOGGJS |
$catjs .= <<ENDTOGGJS |
|
|
Line 348 sub course_details {
|
Line 366 sub course_details {
|
my %add_entries = (topmargin => "0", |
my %add_entries = (topmargin => "0", |
marginheight => "0",); |
marginheight => "0",); |
my $js = '<script type="text/javascript">'."\n". |
my $js = '<script type="text/javascript">'."\n". |
&courselink_javascript().'</script>'."\n"; |
&courselink_javascript($r).'</script>'."\n"; |
my $start_page = |
my $start_page = |
&Apache::loncommon::start_page('Course/Community Catalog',$js, |
&Apache::loncommon::start_page('Course/Community Catalog',$js, |
{'add_entries' => \%add_entries, }); |
{'add_entries' => \%add_entries, }); |
Line 412 END
|
Line 430 END
|
} |
} |
|
|
sub courselink_javascript { |
sub courselink_javascript { |
|
my ($r) = @_; |
|
my $hostname = $r->hostname(); |
return <<"END"; |
return <<"END"; |
|
|
function ToSyllabus(cdom,cnum) { |
function ToSyllabus(cdom,cnum,usehttp) { |
if (cdom == '' || cdom == null) { |
if (cdom == '' || cdom == null) { |
return; |
return; |
} |
} |
Line 422 function ToSyllabus(cdom,cnum) {
|
Line 442 function ToSyllabus(cdom,cnum) {
|
return; |
return; |
} |
} |
document.linklaunch.action = "/public/"+cdom+"/"+cnum+"/syllabus"; |
document.linklaunch.action = "/public/"+cdom+"/"+cnum+"/syllabus"; |
|
if (usehttp == 1) { |
|
var hostname = '$hostname'; |
|
if (hostname != '') { |
|
document.linklaunch.action = 'http://'+hostname+document.linklaunch.action; |
|
} |
|
document.linklaunch.action += '?usehttp=1'; |
|
} |
document.linklaunch.submit(); |
document.linklaunch.submit(); |
} |
} |
|
|
Line 754 sub additional_filters {
|
Line 781 sub additional_filters {
|
$showhidden_status = 'checked="checked" '; |
$showhidden_status = 'checked="checked" '; |
} |
} |
my @currstatuses = &Apache::loncommon::get_env_multiple('form.showcounts'); |
my @currstatuses = &Apache::loncommon::get_env_multiple('form.showcounts'); |
my $dc_title = &Apache::lonnet::plaintext('dc'); |
|
my ($details_text,$hidden_text,$statusdisplay,$cellborder); |
my ($details_text,$hidden_text,$statusdisplay,$cellborder); |
my $wasactivedisplay = 'none'; |
my $wasactivedisplay = 'none'; |
if ($env{'form.showdetails'}) { |
if ($env{'form.showdetails'}) { |
Line 768 sub additional_filters {
|
Line 794 sub additional_filters {
|
$cellborder = 'border-left: 0px'; |
$cellborder = 'border-left: 0px'; |
} |
} |
if ($env{'form.currcat_0'} eq 'communities::0') { |
if ($env{'form.currcat_0'} eq 'communities::0') { |
$details_text = &mt('Show full details for each community ([_1] only)',$dc_title); |
$details_text = &mt('Show full details for each community (domain staff only)'); |
$hidden_text = &mt('Include communities set to be hidden from catalog ([_1] only)',$dc_title); |
$hidden_text = &mt('Include communities set to be hidden from catalog (domain staff only)'); |
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
} elsif ($env{'form.currcat_0'} eq 'placement::0') { |
$details_text = &mt('Show full details for each placement test ([_1] only)',$dc_title); |
$details_text = &mt('Show full details for each placement test (domain staff only)'); |
$hidden_text = &mt('Include placement tests set to be hidden from catalog ([_1] only)',$dc_title); |
$hidden_text = &mt('Include placement tests set to be hidden from catalog (domain staff only)'); |
} else { |
} else { |
$details_text = &mt('Show full details for each course ([_1] only)',$dc_title); |
$details_text = &mt('Show full details for each course (domain staff only)'); |
$hidden_text = &mt('Include courses set to be hidden from catalog ([_1] only)',$dc_title); |
$hidden_text = &mt('Include courses set to be hidden from catalog (domain staff only)'); |
} |
} |
if ($is_dc) { |
if ($is_dc) { |
$output .= '<span class="LC_nobreak">'. |
$output .= '<span class="LC_nobreak">'. |
Line 890 sub user_is_dc {
|
Line 916 sub user_is_dc {
|
} |
} |
|
|
sub canview_all { |
sub canview_all { |
|
my ($knownuser,$codedom) = @_; |
my $canviewall = 0; |
my $canviewall = 0; |
my $page = 'coursecatalog'; |
my $page = 'coursecatalog'; |
if (&LONCAPA::lonauthcgi::can_view($page)) { |
if (&LONCAPA::lonauthcgi::can_view($page)) { |
$canviewall = 1; |
$canviewall = 1; |
} elsif (&LONCAPA::lonauthcgi::check_ipbased_access($page)) { |
} elsif (&LONCAPA::lonauthcgi::check_ipbased_access($page)) { |
$canviewall= 1; |
$canviewall= 1; |
|
} elsif (($knownuser) && ($codedom ne '')) { |
|
if (&Apache::lonnet::allowed('dcd',$codedom)) { |
|
$canviewall = 1; |
|
} |
} |
} |
return $canviewall; |
return $canviewall; |
} |
} |
Line 1271 sub build_courseinfo_hash {
|
Line 1302 sub build_courseinfo_hash {
|
$cleandesc=~s/'/\\'/g; |
$cleandesc=~s/'/\\'/g; |
$cleandesc =~ s/^\s+//; |
$cleandesc =~ s/^\s+//; |
my ($cdom,$cnum)=split(/\_/,$course); |
my ($cdom,$cnum)=split(/\_/,$course); |
my ($instcode,$singleowner,$ttype,$selfenroll_types, |
my ($instcode,$singleowner,$ttype,$selfenroll_types,$extsyllplain, |
$selfenroll_start,$selfenroll_end,@owners,%ownernames,$categories); |
$selfenroll_start,$selfenroll_end,@owners,%ownernames,$categories); |
if (ref($courses->{$course}) eq 'HASH') { |
if (ref($courses->{$course}) eq 'HASH') { |
$descr = $courses->{$course}{'description'}; |
$descr = $courses->{$course}{'description'}; |
Line 1282 sub build_courseinfo_hash {
|
Line 1313 sub build_courseinfo_hash {
|
$selfenroll_start = $courses->{$course}{'selfenroll_start_date'}; |
$selfenroll_start = $courses->{$course}{'selfenroll_start_date'}; |
$selfenroll_end = $courses->{$course}{'selfenroll_end_date'}; |
$selfenroll_end = $courses->{$course}{'selfenroll_end_date'}; |
$categories = $courses->{$course}{'categories'}; |
$categories = $courses->{$course}{'categories'}; |
|
$extsyllplain = $courses->{$course}{'extsyllplain'}; |
push(@owners,$singleowner); |
push(@owners,$singleowner); |
if ($courses->{$course}{'co-owners'} ne '') { |
if ($courses->{$course}{'co-owners'} ne '') { |
foreach my $item (split(/,/,$courses->{$course}{'co-owners'})) { |
foreach my $item (split(/,/,$courses->{$course}{'co-owners'})) { |
Line 1325 sub build_courseinfo_hash {
|
Line 1357 sub build_courseinfo_hash {
|
$courseinfo{$course}{'selfenroll_start'} = $selfenroll_start; |
$courseinfo{$course}{'selfenroll_start'} = $selfenroll_start; |
$courseinfo{$course}{'selfenroll_end'} = $selfenroll_end; |
$courseinfo{$course}{'selfenroll_end'} = $selfenroll_end; |
$courseinfo{$course}{'categories'} = $categories; |
$courseinfo{$course}{'categories'} = $categories; |
|
$courseinfo{$course}{'extsyllplain'} = $extsyllplain; |
|
|
my %coursehash = &Apache::lonnet::dump('environment',$cdom,$cnum); |
my %coursehash = &Apache::lonnet::dump('environment',$cdom,$cnum); |
my @classids; |
my @classids; |
Line 1509 sub count_students {
|
Line 1542 sub count_students {
|
sub courseinfo_row { |
sub courseinfo_row { |
my ($info,$knownuser,$details,$countref,$now,$course,$trails,$allitems,$numbers,$canviewall) = @_; |
my ($info,$knownuser,$details,$countref,$now,$course,$trails,$allitems,$numbers,$canviewall) = @_; |
my ($cdom,$cnum,$title,$ownerlast,$code,$owner,$seclist,$xlist_items, |
my ($cdom,$cnum,$title,$ownerlast,$code,$owner,$seclist,$xlist_items, |
$accessdates,$showsyllabus,$counts,$autoenrollment,$output,$categories); |
$accessdates,$showsyllabus,$counts,$autoenrollment,$output,$categories, |
|
$extsyllplain); |
if (ref($info) eq 'HASH') { |
if (ref($info) eq 'HASH') { |
$cdom = $info->{'cdom'}; |
$cdom = $info->{'cdom'}; |
$cnum = $info->{'cnum'}; |
$cnum = $info->{'cnum'}; |
Line 1523 sub courseinfo_row {
|
Line 1557 sub courseinfo_row {
|
$counts = $info->{'counts'}; |
$counts = $info->{'counts'}; |
$autoenrollment = $info->{'autoenrollment'}; |
$autoenrollment = $info->{'autoenrollment'}; |
$showsyllabus = $info->{'showsyllabus'}; |
$showsyllabus = $info->{'showsyllabus'}; |
|
$extsyllplain = $info->{'extsyllplain'}; |
$categories = $info->{'categories'}; |
$categories = $info->{'categories'}; |
} else { |
} else { |
$output = '<td colspan="8">'.&mt('No information available for [_1].', |
$output = '<td colspan="8">'.&mt('No information available for [_1].', |
Line 1550 sub courseinfo_row {
|
Line 1585 sub courseinfo_row {
|
'<td>'.$xlist_items.'</td>'. |
'<td>'.$xlist_items.'</td>'. |
'<td>'.$title.' <font size="-2">'; |
'<td>'.$title.' <font size="-2">'; |
if ($showsyllabus) { |
if ($showsyllabus) { |
$output .= '<a href="javascript:ToSyllabus('."'$cdom','$cnum'".')">'.&mt('Syllabus').'</a>'; |
my $usehttp = 0; |
|
if (($ENV{'SERVER_PORT'} == 443) && ($extsyllplain)) { |
|
$usehttp = 1; |
|
} |
|
$output .= '<a href="javascript:ToSyllabus('."'$cdom','$cnum','$usehttp'".')">'.&mt('Syllabus').'</a>'; |
} else { |
} else { |
$output .= ' '; |
$output .= ' '; |
} |
} |
Line 1630 sub identify_sections {
|
Line 1669 sub identify_sections {
|
sub get_valid_classes { |
sub get_valid_classes { |
my ($seclist,$xlist_items,$crscode,$owners,$cdom,$cnum) = @_; |
my ($seclist,$xlist_items,$crscode,$owners,$cdom,$cnum) = @_; |
my $response; |
my $response; |
my %validations; |
my (@sections,@xlists,%possclasses,%okclasses,%validations); |
@{$validations{'sections'}} = (); |
@{$validations{'sections'}} = (); |
@{$validations{'xlists'}} = (); |
@{$validations{'xlists'}} = (); |
my $totalitems = 0; |
my $totalitems = 0; |
if ($seclist) { |
if ($seclist) { |
foreach my $sec (split(/, /,$seclist)) { |
@sections = split(/,\s+/,$seclist); |
|
map { $possclasses{$crscode.$_} = 1; } @sections; |
|
} |
|
if ($xlist_items) { |
|
@xlists = split(/,\s+/,$xlist_items); |
|
map { $possclasses{$_} = 1; } @xlists; |
|
} |
|
my %okclasses = &Apache::lonnet::auto_validate_instclasses($cdom,$cnum,$owners, |
|
\%possclasses); |
|
if (keys(%okclasses)) { |
|
foreach my $sec (@sections) { |
my $class = $crscode.$sec; |
my $class = $crscode.$sec; |
if (&Apache::lonnet::auto_validate_class_sec($cdom,$cnum,$owners, |
if ($okclasses{$crscode.$sec}) { |
$class) eq 'ok') { |
|
if (!grep(/^\Q$sec$\E/,@{$validations{'sections'}})) { |
if (!grep(/^\Q$sec$\E/,@{$validations{'sections'}})) { |
push(@{$validations{'sections'}},$sec); |
push(@{$validations{'sections'}},$sec); |
$totalitems ++; |
$totalitems ++; |
} |
} |
} |
} |
} |
} |
} |
foreach my $item (@xlists) { |
if ($xlist_items) { |
if ($okclasses{$item}) { |
foreach my $item (split(/, /,$xlist_items)) { |
if (!grep(/^\Q$item\E$/,@{$validations{'xlists'}})) { |
if (&Apache::lonnet::auto_validate_class_sec($cdom,$cnum,$owners, |
|
$item) eq 'ok') { |
|
if (!grep(/^\Q$item$\E/,@{$validations{'xlists'}})) { |
|
push(@{$validations{'xlists'}},$item); |
push(@{$validations{'xlists'}},$item); |
$totalitems ++; |
$totalitems ++; |
} |
} |