version 1.51, 2006/07/03 04:00:34
|
version 1.54, 2006/11/05 20:59:17
|
Line 53 sub handler {
|
Line 53 sub handler {
|
'cdomelement','cnameelement','roleelement', |
'cdomelement','cnameelement','roleelement', |
'pickedcourse','instcodefilter', |
'pickedcourse','instcodefilter', |
'ownerfilter','coursefilter','multiple', |
'ownerfilter','coursefilter','multiple', |
'type']); |
'type','ownerdomfilter']); |
# domain filter and selection |
|
my $domainfilter=$env{'form.domainfilter'}; |
my ($type,$title,$jscript,$multelement,$multiple,$name_code,$name_input, |
$domainfilter=~s/\W//g; |
$roleelement); |
unless ($domainfilter) { $domainfilter=''; } |
$type = $env{'form.type'}; |
my $domainselectform=&Apache::loncommon::select_dom_form($domainfilter, |
if (!defined($env{'form.type'})) { |
'domainfilter',1); |
$type = 'Course'; |
# description filter |
} |
my $descriptfilter=$env{'form.descriptfilter'}; |
$title = &mt('Selecting a [_1]',$type); |
unless ($descriptfilter) { $descriptfilter=''; } |
|
my $listdescript=&HTML::Entities::encode($descriptfilter,'<>&"'); |
# Setup for multiple course selections, if flag for multiples set. |
# institutional code filter |
($title,$jscript,$multelement,$multiple) = &multiples_tag($type,$title); |
my $instcodefilter=$env{'form.instcodefilter'}; |
|
unless ($instcodefilter) { $instcodefilter=''; } |
if (defined($env{'form.cnameelement'}) && $env{'form.cnameelement'} ne '') { |
my $listinstcode=&HTML::Entities::encode($instcodefilter,'<>&"'); |
$name_code = "opener.document.$env{'form.form'}.$env{'form.cnameelement'}.". |
# course owner filter |
"value=cdesc;"; |
my $ownerfilter=$env{'form.ownerfilter'}; |
$name_input ='<input type="hidden" name="cnameelement" value="'. |
unless ($ownerfilter) { $ownerfilter=''; } |
$env{'form.cnameelement'}.'" />'; |
my $listowner=&HTML::Entities::encode($ownerfilter,'<>&"'); |
} |
# course ID filter for DCs only |
|
my ($courseidtag,$coursefilter); |
my $submitopener = ''; |
if ($env{'user.adv'} && $domainfilter && exists($env{'user.role.dc./'. |
my $autosubmit = ''; |
$domainfilter.'/'})) { |
my $lastaction = 'self.close()'; |
$coursefilter=$env{'form.coursefilter'}; |
if ($env{'form.form'} eq 'cu') { |
unless ($coursefilter) { $coursefilter=''; } |
$lastaction = 'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n". |
my $listcourseid=&HTML::Entities::encode($coursefilter,'<>&"'); |
'document.courselist.submit();'; |
$courseidtag = &mt('LON-CAPA course ID'); |
} |
$courseidtag .= qq|: <input type="text" name="coursefilter" size="25" value="$listcourseid" /> |
if ($env{'form.form'} eq 'portform') { |
<br /> |
$lastaction = 'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n". |
|; |
'document.courselist.submit();'; |
} |
} |
# last course activity filter and selection |
my $roledom = $env{'form.roleelement'}; |
my $sincefilter=$env{'form.sincefilter'}; |
if ($roledom) { |
$sincefilter=~s/[^\d-]//g; |
$roleelement = '<input type="hidden" name="roleelement" value="'.$roledom.'" />'; |
unless ($sincefilter) { $sincefilter=-1; } |
$submitopener = &Apache::lonroles::processpick(); |
my $sincefilterform=&Apache::loncommon::select_form($sincefilter, |
$autosubmit = 'process_pick("'.$roledom.'")'; |
'sincefilter',('-1'=>'', |
} |
'86400' => 'today', |
|
'604800' => 'last week', |
my (%filter,%list); |
'2592000' => 'last month', |
my $filterdisplay; |
'7776000' => 'last three months', |
my $onlyown = 0; |
'15552000' => 'last six months', |
if ((($env{'form.form'} eq 'portform') && ($env{'user.adv'}))) { |
'31104000' => 'last year', |
$onlyown = 1; |
'select_form_order' => |
} else { |
['-1','86400','604800','2592000','7776000', |
$filterdisplay = &build_filters($type,$name_input,$roleelement, |
'15552000','31104000'])); |
$multelement, \%filter,\%list); |
|
} |
# if called from loncreateuser, report sections, then close |
# if called from loncreateuser, report sections, then close |
my (%loaditem,$seclist,$groupslist,$roleslist,$rolesnameslist, |
my (%loaditem,$seclist,$groupslist,$roleslist,$rolesnameslist, |
$accesslist,$accessnameslist); |
$accesslist,$accessnameslist); |
Line 112 sub handler {
|
Line 113 sub handler {
|
if ($env{'form.pickedcourse'}) { |
if ($env{'form.pickedcourse'}) { |
($cdom,$cnum) = split/_/,$env{'form.pickedcourse'}; |
($cdom,$cnum) = split/_/,$env{'form.pickedcourse'}; |
} |
} |
my $type = $env{'form.type'}; |
|
if (!defined($env{'form.type'})) { |
|
$type = 'Course'; |
|
} |
|
if ($env{'form.form'} eq 'cu' && $env{'form.pickedcourse'}) { |
if ($env{'form.form'} eq 'cu' && $env{'form.pickedcourse'}) { |
$loaditem{'onload'} ="setSections()"; |
$loaditem{'onload'} ="setSections()"; |
($seclist,$num_sections,$groupslist,$num_groups) = |
($seclist,$num_sections,$groupslist,$num_groups) = |
Line 125 sub handler {
|
Line 122 sub handler {
|
# if called from portfolio, report roles, sections, groups and close |
# if called from portfolio, report roles, sections, groups and close |
my ($roles_element,$groups_element,$status_element,$setitems_function); |
my ($roles_element,$groups_element,$status_element,$setitems_function); |
if ($env{'form.form'} eq 'portform' && $env{'form.pickedcourse'}) { |
if ($env{'form.form'} eq 'portform' && $env{'form.pickedcourse'}) { |
my ($row_id) = ($env{'form.cnumelement'} =~ /^crsnum_(\d+)$/); |
|
$roles_element = 'role_'.$row_id.'_1'; |
|
$groups_element = 'group_'.$row_id.'_1'; |
|
$sec_element = 'section_'.$row_id.'_1'; |
|
$status_element = 'access_'.$row_id.'_1'; |
|
$grplist_element = 'grplist_'.$row_id.'_1'; |
|
$loaditem{'onload'} ="setItems()"; |
$loaditem{'onload'} ="setItems()"; |
($seclist,$num_sections,$groupslist,$num_groups,$roleslist,$num_roles, |
($seclist,$num_sections,$groupslist,$num_groups,$roleslist,$num_roles, |
$rolesnameslist,$accesslist,$num_access,$accessnameslist) = |
$rolesnameslist,$accesslist,$num_access,$accessnameslist) = |
&build_selection_lists($cdom,$cnum,$type,1,1,$env{'form.form'}); |
&build_selection_lists($cdom,$cnum,$type,1,1,$env{'form.form'}); |
$setitems_function = qq| |
($sec_element,$grplist_element,$setitems_function) = |
function setItems() { |
&setitems_javascript($seclist,$num_sections,$groupslist,$num_groups, |
opener.document.$env{"form.form"}.activate.checked = true; |
$roleslist,$num_roles,$rolesnameslist, |
setRoles(); |
$accesslist,$num_access,$accessnameslist); |
setGroups(); |
|
setStatus(); |
|
setSections(); |
|
} |
|
|
|
function setRoles() { |
|
var numRoles = $num_roles |
|
var rolesArray = new Array("$roleslist"); |
|
var roleNamesArray = new Array("$rolesnameslist"); |
|
opener.document.$env{"form.form"}.$roles_element.length = 0; |
|
if (numRoles == 0) { |
|
opener.document.$env{"form.form"}.$roles_element.multiple=false; |
|
opener.document.$env{"form.form"}.$roles_element.size=1; |
|
opener.document.$env{"form.form"}.$roles_element.options[0] = new Option('No existing roles','',false,false); |
|
} else { |
|
if (numRoles == 1) { |
|
opener.document.$env{"form.form"}.$roles_element.multiple=false; |
|
opener.document.$env{"form.form"}.$roles_element.size=1; |
|
opener.document.$env{"form.form"}.$roles_element.options[0] = new Option('Select','',true,true); |
|
opener.document.$env{"form.form"}.$roles_element.options[1] = new Option(roleNamesArray[0],rolesArray[0],false,false); |
|
} else { |
|
for (var i=0; i<numRoles; i++) { |
|
opener.document.$env{"form.form"}.$roles_element.options[i] = new Option(roleNamesArray[i],rolesArray[i],false,false); |
|
} |
|
opener.document.$env{"form.form"}.$roles_element.multiple=true; |
|
if (numRoles < 3) { |
|
opener.document.$env{"form.form"}.$roles_element.size=numRoles; |
|
} else { |
|
opener.document.$env{"form.form"}.$roles_element.size=3; |
|
} |
|
opener.document.$env{"form.form"}.$roles_element.options[0].selected = false; |
|
} |
|
} |
|
} |
|
|
|
function setStatus() { |
|
var numStatus = $num_access; |
|
var statusArray = new Array("$accesslist"); |
|
var statusNamesArray = new Array("$accessnameslist"); |
|
opener.document.$env{"form.form"}.$status_element.multiple=true; |
|
opener.document.$env{"form.form"}.$status_element.size=3; |
|
for (var i=0; i<numStatus; i++) { |
|
opener.document.$env{"form.form"}.$status_element.options[i] = new Option(statusNamesArray[i],statusArray[i],false,false); |
|
} |
|
} |
|
|
|
function setGroups() { |
|
var numGroups = $num_groups; |
|
var groupsArray = new Array("$groupslist"); |
|
opener.document.$env{"form.form"}.$groups_element.length = 0; |
|
if (numGroups == 0) { |
|
opener.document.$env{"form.form"}.$groups_element.multiple=false; |
|
opener.document.$env{"form.form"}.$groups_element.size=1; |
|
opener.document.$env{"form.form"}.$groups_element.options[0] = new Option('No existing groups','',false,false); |
|
} else { |
|
if (numGroups == 1) { |
|
opener.document.$env{"form.form"}.$groups_element.multiple=false; |
|
opener.document.$env{"form.form"}.$groups_element.size=1; |
|
opener.document.$env{"form.form"}.$groups_element.options[0] = new Option('Select','',true,true); |
|
opener.document.$env{"form.form"}.$groups_element.options[1] = new Option('No group','',false,false); |
|
opener.document.$env{"form.form"}.$groups_element.options[2] = new Option(groupsArray[0],groupsArray[0],false,false); |
|
} else { |
|
for (var i=0; i<numGroups; i++) { |
|
opener.document.$env{"form.form"}.$groups_element.options[i] = new Option(groupsArray[i],groupsArray[i],false,false); |
|
} |
|
opener.document.$env{"form.form"}.$groups_element.multiple=true; |
|
if (numGroups < 3) { |
|
opener.document.$env{"form.form"}.$groups_element.size=numGroups; |
|
} else { |
|
opener.document.$env{"form.form"}.$groups_element.size=3; |
|
} |
|
opener.document.$env{"form.form"}.$groups_element.options[0].selected = false; |
|
} |
|
} |
|
} |
|
|
|
|; |
|
} |
|
my $jscript; |
|
my $typeselectform = '<select name="type" size="1"'; |
|
$typeselectform .= ">\n"; |
|
foreach my $posstype ('Course','Group') { |
|
$typeselectform.='<option value="'.$posstype.'" "'. |
|
($posstype eq $type ? 'selected="selected" ' : ''). ">$posstype</option>\n"; |
|
} |
|
$typeselectform.="</select>"; |
|
my $title = &mt('Selecting a [_1]',$type); |
|
# Setup for multiple course selections, if flag for multiples set. |
|
my $multiple = $env{'form.multiple'}; |
|
my $multelement; |
|
if ($multiple) { |
|
$title = &mt('Selecting [_1](s)',lc($type)); |
|
$jscript = &Apache::loncommon::check_uncheck_jscript(); |
|
$multelement = '<input type="hidden" name="multiple" value="'.$multiple.'" />'; |
|
} |
} |
$r->print(&Apache::loncommon::start_page($title,undef, |
$r->print(&Apache::loncommon::start_page($title,undef, |
{'add_entries' => \%loaditem, |
{'add_entries' => \%loaditem, |
'no_nav_bar' => 1, })); |
'no_nav_bar' => 1, })); |
my %lt = ( |
|
'cac' => &mt('[_1] Activity',$type), |
|
'cde' => &mt('[_1] Description',$type), |
|
'cdo' => &mt('[_1] Domain',$type), |
|
'cin' => &mt('Course Institutional Code'), |
|
'cow' => &mt("[_1] Owner's Username",$type), |
|
'cog' => &mt('Course or Group') |
|
); |
|
|
|
my ($name_code,$name_input); |
|
if (defined($env{'form.cnameelement'}) && $env{'form.cnameelement'} ne '') { |
|
$name_code = "opener.document.$env{'form.form'}.$env{'form.cnameelement'}.value=cdesc;"; |
|
$name_input ='<input type="hidden" name="cnameelement" value="'. |
|
$env{'form.cnameelement'}.'" />'; |
|
} |
|
my $submitopener = ''; |
|
my $autosubmit = ''; |
|
my $roleelement = ''; |
|
my $lastaction = 'self.close()'; |
|
if ($env{'form.form'} eq 'cu') { |
|
$lastaction = 'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n". |
|
'document.courselist.submit();'; |
|
} |
|
if ($env{'form.form'} eq 'portform') { |
|
$lastaction = 'document.courselist.pickedcourse.value = cdom+"_"+cname;'."\n". |
|
'document.courselist.submit();'; |
|
} |
|
my $roledom = $env{'form.roleelement'}; |
|
if ($roledom) { |
|
$roleelement = '<input type="hidden" name="roleelement" value="'.$roledom.'" />'; |
|
$submitopener = &Apache::lonroles::processpick(); |
|
$autosubmit = 'process_pick("'.$roledom.'")'; |
|
} |
|
my $instcodeform; |
|
if ($type eq 'Course') { |
|
$instcodeform = $lt{'cin'}.': <input type="text" name="instcodefilter" |
|
size="10" value="'.$listinstcode.'" /><br />'; |
|
} |
|
|
|
my %elements = ( |
my %elements = ( |
Course => { |
'Course' => { |
name => 'coursepick', |
name => 'coursepick', |
total => 'coursetotal', |
total => 'coursetotal', |
list => 'courselist', |
list => 'courselist', |
}, |
}, |
Group => { |
'Non-standard course' => { |
name => 'grouppick', |
name => 'grouppick', |
total => 'grouptotal', |
total => 'grouptotal', |
list => 'grouplist', |
list => 'grouplist', |
}, |
}, |
); |
); |
|
my $setsec_func = &setsec_javascript($seclist,$sec_element,$grplist_element, |
|
$groupslist,$num_sections); |
$r->print(<<ENDSCRIPT); |
$r->print(<<ENDSCRIPT); |
<script> |
<script> |
function gochoose(cname,cdom,cdesc,multiple,caller) { |
function gochoose(cname,cdom,cdesc,multiple,caller) { |
Line 349 function gochoose(cname,cdom,cdesc,multi
|
Line 208 function gochoose(cname,cdom,cdesc,multi
|
$lastaction |
$lastaction |
} |
} |
|
|
function setSections() { |
$setsec_func |
var numSections = $num_sections |
|
var sectionsArray = new Array("$seclist") |
$setitems_function |
opener.document.$env{"form.form"}.$sec_element.length = 0 |
|
if (numSections == 0) { |
$jscript |
opener.document.$env{"form.form"}.$sec_element.multiple=false |
</script> |
opener.document.$env{"form.form"}.$sec_element.size=1; |
$submitopener |
opener.document.$env{"form.form"}.$sec_element.options[0] = new Option('No existing sections','',false,false) |
ENDSCRIPT |
} else { |
$r->print($filterdisplay); |
if (numSections == 1) { |
|
opener.document.$env{"form.form"}.$sec_element.multiple=false; |
# ---------------------------------------------------------------- Get the data |
opener.document.$env{"form.form"}.$sec_element.size=1; |
if ($env{'form.gosearch'} || $onlyown) { |
opener.document.$env{"form.form"}.$sec_element.options[0] = new Option('Select','',true,true); |
my %courses = &search_courses($r,$type,$onlyown,\%filter); |
opener.document.$env{"form.form"}.$sec_element.options[1] = new Option('No section','',false,false) |
&display_matched_courses($r,$type,$multiple,%courses); |
opener.document.$env{"form.form"}.$sec_element.options[2] = new Option(sectionsArray[0],sectionsArray[0],false,false); |
} |
|
$r->print(&Apache::loncommon::end_page()); |
|
return OK; |
|
} |
|
|
|
sub display_matched_courses { |
|
my ($r,$type,$multiple,%courses) = @_; |
|
$r->print('<form name="courselist" method="post" action="/adm/pickcourse">'); |
|
my %by_descrip; |
|
my $numcourses = keys(%courses); |
|
foreach my $course (keys(%courses)) { |
|
my $descr; |
|
if ($courses{$course} =~ m/^([^:]*):/i) { |
|
$descr = &unescape($1); |
} else { |
} else { |
for (var i=0; i<numSections; i++) { |
$descr = &unescape($courses{$course}); |
opener.document.$env{"form.form"}.$sec_element.options[i] = new Option(sectionsArray[i],sectionsArray[i],false,false) |
} |
|
my $description = $descr; |
|
push (@{$by_descrip{$description}}, $course); |
|
} |
|
if ($numcourses > 1 && $multiple) { |
|
$r->print('<input type="button" value="check all" |
|
onclick="javascript:checkAll(document.courselist.course_id)" /> |
|
<input type="button" value="uncheck all" |
|
onclick="javascript:uncheckAll(document.courselist.course_id)" /> |
|
<br /><br />'); |
|
} |
|
foreach my $description (sort { lc($a) cmp lc($b) } (keys(%by_descrip))) { |
|
foreach my $course (@{$by_descrip{$description}}) { |
|
my $cleandesc=&HTML::Entities::encode($description,'<>&"'); |
|
$cleandesc=~s/'/\\'/g; |
|
my ($cdom,$cnum)=split(/\_/,$course); |
|
my ($descr,$instcode,$owner,$ttype) = split/:/,$courses{$course}; |
|
$r->print(&course_chooser($multiple,$cdom,$cnum,$cleandesc)); |
|
$r->print($description.'('. |
|
($Apache::lonnet::domaindescription{$cdom}? |
|
$Apache::lonnet::domaindescription{$cdom}:$cdom).")"); |
|
unless ($instcode eq '') { |
|
$r->print(" - ".&unescape($instcode)); |
} |
} |
opener.document.$env{"form.form"}.$sec_element.multiple=true |
unless ($owner eq '') { |
if (numSections < 3) { |
$r->print(", owner - ".&unescape($owner)); |
opener.document.$env{"form.form"}.$sec_element.size=numSections; |
|
} else { |
|
opener.document.$env{"form.form"}.$sec_element.size=3; |
|
} |
} |
opener.document.$env{"form.form"}.$sec_element.options[0].selected = false |
unless ($ttype eq '') { |
|
$r->print('('.&Apache::lonnet::unescape($ttype).')'); |
|
} |
|
if ($multiple) { $r->print("</label>\n"); } |
|
$r->print("<br />\n"); |
} |
} |
} |
} |
opener.document.$env{"form.form"}.$grplist_element.value='$groupslist'; |
if (!%courses) { |
self.close() |
$r->print(&mt('None found')); |
|
} elsif ($multiple) { |
|
$r->print('<input type="button" value="Submit" onClick="gochoose('."'','','',1)".'" />'); |
|
} |
|
$r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'. |
|
"\n".'<input type="hidden" name="pickedcourse" value="" />'."\n". |
|
'<input type="hidden" name="cnumelement" value="'.$env{'form.cnumelement'}.'" />'."\n". |
|
'<input type="hidden" name="cdomelement" value="'.$env{'form.cdomelement'}.'" />'."\n". |
|
'<input type="hidden" name="type" value="'.$type.'" />'."\n"); |
|
if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) { |
|
$r->print('<input type="hidden" name="roleelement" value="'. |
|
$env{'form.roleelement'}.'" />'."\n"); |
|
} |
|
$r->print("</form>\n"); |
|
return; |
} |
} |
|
|
$setitems_function |
|
|
|
$jscript |
sub multiples_tag { |
</script> |
my ($type,$title) = @_; |
$submitopener |
my ($jscript,$multelement,$multiple); |
|
$multiple = $env{'form.multiple'}; |
|
if ($multiple) { |
|
$title = &mt('Selecting [_1](s)',lc($type)); |
|
$jscript = &Apache::loncommon::check_uncheck_jscript(); |
|
$multelement = '<input type="hidden" name="multiple" value="'.$multiple.'" />'; |
|
} |
|
return ($title,$jscript,$multelement,$multiple); |
|
} |
|
|
|
sub build_filters { |
|
my ($type,$name_input,$roleelement,$multelement,$filter,$list) = @_; |
|
my @filters = ('domainfilter','descriptfilter','instcodefilter','ownerfilter','ownerdomfilter'); |
|
# course ID filter for DCs only |
|
my ($courseidtag,$domainselectform,$sincefilterform,$ownerdomselectform, |
|
$instcodeform,$typeselectform); |
|
if ($env{'user.adv'} && $env{'form.domainfilter'} && |
|
exists($env{'user.role.dc./'.$env{'form.domainfilter'}})) { |
|
push(@filters,'coursefilter'); |
|
$courseidtag=&mt('LON-CAPA course ID'). |
|
'<input type="text" name="coursefilter" size="25" value="'. $list->{'coursefilter'}.'" /><br />'; |
|
} |
|
foreach my $item (@filters) { |
|
$filter->{$item} = $env{'form.'.$item}; |
|
if ($item ne 'descriptfilter' && $item ne 'instcodefilter') { |
|
$filter->{$item} =~ s/\W//g; |
|
if (!$filter->{$item}) { |
|
$filter->{$item} = ''; |
|
} |
|
} |
|
if ($item eq 'domainfilter') { |
|
$domainselectform = |
|
&Apache::loncommon::select_dom_form($filter->{$item},'domainfilter',1); |
|
} elsif ($item eq 'ownerdomfilter') { |
|
$ownerdomselectform = |
|
&Apache::loncommon::select_dom_form($filter->{$item},'ownerdomfilter',1); |
|
} else { |
|
$list->{$item} = &HTML::Entities::encode($filter->{$item},'<>&"'); |
|
} |
|
} |
|
|
|
# last course activity filter and selection |
|
$filter->{'sincefilter'} = $env{'form.sincefilter'}; |
|
$filter->{'sincefilter'} =~ s/[^\d-]//g; |
|
if (!$filter->{'sincefilter'}) { $filter->{'sincefilter'}=-1; } |
|
$sincefilterform=&Apache::loncommon::select_form($filter->{'sincefilter'}, |
|
'sincefilter',('-1'=>'', |
|
'86400' => 'today', |
|
'604800' => 'last week', |
|
'2592000' => 'last month', |
|
'7776000' => 'last three months', |
|
'15552000' => 'last six months', |
|
'31104000' => 'last year', |
|
'select_form_order' => |
|
['-1','86400','604800','2592000','7776000', |
|
'15552000','31104000'])); |
|
|
|
my %lt = ( |
|
'cac' => &mt('[_1] Activity',$type), |
|
'cde' => &mt('[_1] Description',$type), |
|
'cdo' => &mt('[_1] Domain',$type), |
|
'cin' => &mt('Course Institutional Code'), |
|
'cow' => &mt("[_1] Owner's Username",$type), |
|
'cod' => &mt("[_1] Owner's Domain", $type), |
|
'cog' => &mt('Course Type') |
|
); |
|
|
|
$typeselectform = '<select name="type" size="1"'; |
|
$typeselectform .= ">\n"; |
|
if ($type eq 'Course') { |
|
$instcodeform = $lt{'cin'}.': <input type="text" name="instcodefilter" |
|
size="10" value="'.$list->{'instcodefilter'}.'" /><br />'; |
|
} |
|
foreach my $posstype ('Course','Non-standard course') { |
|
$typeselectform.='<option value="'.$posstype.'" "'. |
|
($posstype eq $type ? 'selected="selected" ' : ''). ">$posstype</option>\n"; |
|
} |
|
$typeselectform.="</select>"; |
|
my $output = <<"END"; |
<form method="post" name="filterpicker" action="/adm/pickcourse"> |
<form method="post" name="filterpicker" action="/adm/pickcourse"> |
<input type="hidden" name="cnumelement" value="$env{'form.cnumelement'}" /> |
<input type="hidden" name="cnumelement" value="$env{'form.cnumelement'}" /> |
<input type="hidden" name="cdomelement" value="$env{'form.cdomelement'}" /> |
<input type="hidden" name="cdomelement" value="$env{'form.cdomelement'}" /> |
Line 401 $lt{'cog'}: $typeselectform
|
Line 387 $lt{'cog'}: $typeselectform
|
<br /> |
<br /> |
$instcodeform |
$instcodeform |
$lt{'cow'}: |
$lt{'cow'}: |
<input type="text" name="ownerfilter" size="10" value="$listowner" /> |
<input type="text" name="ownerfilter" size="10" value="$list->{'ownerfilter'}" /> |
|
<br /> |
|
$lt{'cod'}: $ownerdomselectform |
<br /> |
<br /> |
$courseidtag |
$courseidtag |
$lt{'cde'}: |
$lt{'cde'}: |
<input type="text" name="descriptfilter" size="40" value="$listdescript" /> |
<input type="text" name="descriptfilter" size="40" value="$list->{'descriptfilter'}" /> |
<p><input type="submit" name="gosearch" value="Search" /></p> |
<p><input type="submit" name="gosearch" value="Search" /></p> |
</form> |
</form> |
<hr /> |
<hr /> |
ENDSCRIPT |
END |
# ---------------------------------------------------------------- Get the data |
return $output; |
if ($env{'form.gosearch'}) { |
} |
|
|
|
sub search_courses { |
|
my ($r,$type,$onlyown,$filter) = @_; |
|
my %courses; |
|
if (!$onlyown) { |
$r->print(&mt('Searching').' ...<br /> <br />'); |
$r->print(&mt('Searching').' ...<br /> <br />'); |
$r->rflush(); |
$r->rflush(); |
unless ($descriptfilter) { $descriptfilter='.'; } |
if (($filter->{'ownerfilter'} ne '') || |
unless ($instcodefilter) { $instcodefilter='.'; } |
($filter->{'ownerdomfilter'} ne '')) { |
unless ($ownerfilter) { $ownerfilter='.'; } |
$filter->{'combownerfilter'} = $filter->{'ownerfilter'}.':'. |
unless ($coursefilter) { $coursefilter='.'; } |
$filter->{'ownerdomfilter'}; |
unless ($type) { $type = '.'; } |
} |
my $timefilter=($sincefilter==-1?1:time-$sincefilter); |
foreach my $item ('descriptfilter','instcodefilter','coursefilter', |
my %courses= |
'combownerfilter') { |
&Apache::lonnet::courseiddump |
if (!$filter->{$item}) { |
($domainfilter,$descriptfilter,$timefilter,$instcodefilter,$ownerfilter,$coursefilter,undef,undef,$type); |
$filter->{$item}='.'; |
$r->print('<form name="courselist" method="post" action="/adm/pickcourse">'); |
|
my %by_descrip; |
|
my $numcourses = keys(%courses); |
|
foreach my $course (keys(%courses)) { |
|
my $descr; |
|
if ($courses{$course} =~ m/^([^:]*):/i) { |
|
$descr = &unescape($1); |
|
} else { |
|
$descr = &unescape($courses{$course}); |
|
} |
|
my $description = $descr; |
|
push (@{$by_descrip{$description}}, $course); |
|
} |
|
if ($numcourses > 1 && $multiple) { |
|
$r->print('<input type="button" value="check all" |
|
onclick="javascript:checkAll(document.courselist.course_id)" /> <input type="button" value="uncheck all" |
|
onclick="javascript:uncheckAll(document.courselist.course_id)" /> |
|
<br /><br />'); |
|
} |
|
foreach my $description (sort |
|
{ lc($a) cmp lc($b) } (keys(%by_descrip))) { |
|
foreach my $course (@{$by_descrip{$description}}) { |
|
my $cleandesc=&HTML::Entities::encode($description,'<>&"'); |
|
$cleandesc=~s/'/\\'/g; |
|
my ($cdom,$cnum)=split(/\_/,$course); |
|
my ($descr,$instcode,$owner,$ttype) = split/:/,$courses{$course}; |
|
$r->print(&course_chooser($multiple,$cdom,$cnum,$cleandesc)); |
|
$r->print($description.'('. |
|
($Apache::lonnet::domaindescription{$cdom}? |
|
$Apache::lonnet::domaindescription{$cdom}:$cdom).")"); |
|
unless ($instcode eq '') { |
|
$r->print(" - ".&unescape($instcode)); |
|
} |
|
unless ($owner eq '') { |
|
$r->print(", owner - ".&unescape($owner)); |
|
} |
|
unless ($ttype eq '') { |
|
$r->print('('.&Apache::lonnet::unescape($ttype).')'); |
|
} |
|
if ($multiple) { $r->print("</label>\n"); } |
|
$r->print("<br />\n"); |
|
} |
} |
} |
|
if (!%courses) { |
|
$r->print(&mt('None found')); |
|
} elsif ($multiple) { |
|
$r->print('<input type="button" value="Submit" onClick="gochoose('."'','','',1)".'" />'); |
|
} |
|
$r->print('<input type="hidden" name="form" value="'.$env{'form.form'}.'" />'."\n". |
|
'<input type="hidden" name="pickedcourse" value="" />'."\n". |
|
'<input type="hidden" name="cnumelement" value="'.$env{'form.cnumelement'}.'" />'."\n". |
|
'<input type="hidden" name="cdomelement" value="'.$env{'form.cdomelement'}.'" />'."\n". |
|
'<input type="hidden" name="type" value="'.$type.'" />'."\n"); |
|
if ((exists($env{'form.roleelement'})) && ($env{'form.form'} eq 'rolechoice')) { |
|
$r->print('<input type="hidden" name="roleelement" value="'.$env{'form.roleelement'}.'" />'."\n"); |
|
} |
} |
$r->print("</form>\n"); |
if ($type eq '') { $type = '.'; } |
|
my $timefilter = |
|
($filter->{'sincefilter'}==-1?1:time-$filter->{'sincefilter'}); |
|
%courses = |
|
&Apache::lonnet::courseiddump($filter->{'domainfilter'}, |
|
$filter->{'descriptfilter'}, |
|
$timefilter, |
|
$filter->{'instcodefilter'}, |
|
$filter->{'combownerfilter'}, |
|
$filter->{'coursefilter'}, |
|
undef,undef,$type); |
|
} else { |
|
$r->print('<br />'); |
|
foreach my $cid (sort(&Apache::loncommon::findallcourses())) { |
|
$courses{$cid} = $env{'course.'.$cid.'.description'}; |
|
} |
} |
} |
$r->print(&Apache::loncommon::end_page()); |
return %courses; |
return OK; |
|
} |
} |
|
|
sub course_chooser { |
sub course_chooser { |
Line 497 sub course_chooser {
|
Line 450 sub course_chooser {
|
return $output; |
return $output; |
} |
} |
|
|
|
sub setsec_javascript { |
|
my ($seclist,$sec_element,$grplist_element,$groupslist,$num_sections) = @_; |
|
my $sectsections = qq| |
|
function setSections() { |
|
var numSections = $num_sections |
|
var sectionsArray = new Array("$seclist") |
|
opener.document.$env{"form.form"}.$sec_element.length = 0 |
|
if (numSections == 0) { |
|
opener.document.$env{"form.form"}.$sec_element.multiple=false |
|
opener.document.$env{"form.form"}.$sec_element.size=1; |
|
opener.document.$env{"form.form"}.$sec_element.options[0] = new Option('No existing sections','',false,false) |
|
} else { |
|
if (numSections == 1) { |
|
opener.document.$env{"form.form"}.$sec_element.multiple=false; |
|
opener.document.$env{"form.form"}.$sec_element.size=1; |
|
opener.document.$env{"form.form"}.$sec_element.options[0] = new Option('Select','',true,true); |
|
opener.document.$env{"form.form"}.$sec_element.options[1] = new Option('No section','',false,false) |
|
opener.document.$env{"form.form"}.$sec_element.options[2] = new Option(sectionsArray[0],sectionsArray[0],false,false); |
|
} else { |
|
for (var i=0; i<numSections; i++) { |
|
opener.document.$env{"form.form"}.$sec_element.options[i] = new Option(sectionsArray[i],sectionsArray[i],false,false) |
|
} |
|
opener.document.$env{"form.form"}.$sec_element.multiple=true |
|
if (numSections < 3) { |
|
opener.document.$env{"form.form"}.$sec_element.size=numSections; } else { |
|
opener.document.$env{"form.form"}.$sec_element.size=3; |
|
} |
|
opener.document.$env{"form.form"}.$sec_element.options[0].selected = false |
|
} |
|
} |
|
opener.document.$env{"form.form"}.$grplist_element.value='$groupslist'; |
|
self.close() |
|
} |
|
|; |
|
} |
|
|
|
sub setitems_javascript { |
|
my ($seclist,$num_sections,$groupslist,$num_groups,$roleslist,$num_roles, |
|
$rolesnameslist,$accesslist,$num_access,$accessnameslist) = @_; |
|
my ($row_id) = ($env{'form.cnumelement'} =~ /^crsnum_(\d+)$/); |
|
my $roles_element = 'role_'.$row_id.'_1'; |
|
my $groups_element = 'group_'.$row_id.'_1'; |
|
my $sec_element = 'section_'.$row_id.'_1'; |
|
my $status_element = 'access_'.$row_id.'_1'; |
|
my $grplist_element = 'grplist_'.$row_id.'_1'; |
|
my $setitems_function = qq| |
|
function setItems() { |
|
opener.document.$env{"form.form"}.activate.checked = true; |
|
setRoles(); |
|
setGroups(); |
|
setStatus(); |
|
setSections(); |
|
} |
|
|
|
function setRoles() { |
|
var numRoles = $num_roles |
|
var rolesArray = new Array("$roleslist"); |
|
var roleNamesArray = new Array("$rolesnameslist"); |
|
opener.document.$env{"form.form"}.$roles_element.length = 0; |
|
if (numRoles == 0) { |
|
opener.document.$env{"form.form"}.$roles_element.multiple=false; |
|
opener.document.$env{"form.form"}.$roles_element.size=1; |
|
opener.document.$env{"form.form"}.$roles_element.options[0] = new Option('No existing roles','',false,false); |
|
} else { |
|
if (numRoles == 1) { |
|
opener.document.$env{"form.form"}.$roles_element.multiple=false; |
|
opener.document.$env{"form.form"}.$roles_element.size=1; |
|
opener.document.$env{"form.form"}.$roles_element.options[0] = new Option('Select','',true,true); |
|
opener.document.$env{"form.form"}.$roles_element.options[1] = new Option(roleNamesArray[0],rolesArray[0],false,false); |
|
} else { |
|
for (var i=0; i<numRoles; i++) { |
|
opener.document.$env{"form.form"}.$roles_element.options[i] = new Option(roleNamesArray[i],rolesArray[i],false,false); |
|
} |
|
opener.document.$env{"form.form"}.$roles_element.multiple=true; |
|
if (numRoles < 3) { |
|
opener.document.$env{"form.form"}.$roles_element.size=numRoles; |
|
} else { |
|
opener.document.$env{"form.form"}.$roles_element.size=3; |
|
} |
|
opener.document.$env{"form.form"}.$roles_element.options[0].selected = false; |
|
} |
|
} |
|
} |
|
|
|
function setStatus() { |
|
var numStatus = $num_access; |
|
var statusArray = new Array("$accesslist"); |
|
var statusNamesArray = new Array("$accessnameslist"); |
|
opener.document.$env{"form.form"}.$status_element.multiple=true; |
|
opener.document.$env{"form.form"}.$status_element.size=3; |
|
for (var i=0; i<numStatus; i++) { |
|
opener.document.$env{"form.form"}.$status_element.options[i] = new Option(statusNamesArray[i],statusArray[i],false,false); |
|
} |
|
} |
|
|
|
function setGroups() { |
|
var numGroups = $num_groups; |
|
var groupsArray = new Array("$groupslist"); |
|
opener.document.$env{"form.form"}.$groups_element.length = 0; |
|
if (numGroups == 0) { |
|
opener.document.$env{"form.form"}.$groups_element.multiple=false; |
|
opener.document.$env{"form.form"}.$groups_element.size=1; |
|
opener.document.$env{"form.form"}.$groups_element.options[0] = new Option('No existing groups','',false,false); |
|
} else { |
|
if (numGroups == 1) { |
|
opener.document.$env{"form.form"}.$groups_element.multiple=false; |
|
opener.document.$env{"form.form"}.$groups_element.size=1; |
|
opener.document.$env{"form.form"}.$groups_element.options[0] = new Option('Select','',true,true); |
|
opener.document.$env{"form.form"}.$groups_element.options[1] = new Option('No group','',false,false); |
|
opener.document.$env{"form.form"}.$groups_element.options[2] = new Option(groupsArray[0],groupsArray[0],false,false); |
|
} else { |
|
for (var i=0; i<numGroups; i++) { |
|
opener.document.$env{"form.form"}.$groups_element.options[i] = new Option(groupsArray[i],groupsArray[i],false,false); |
|
} |
|
opener.document.$env{"form.form"}.$groups_element.multiple=true; |
|
if (numGroups < 3) { |
|
opener.document.$env{"form.form"}.$groups_element.size=numGroups; |
|
} else { |
|
opener.document.$env{"form.form"}.$groups_element.size=3; |
|
} |
|
opener.document.$env{"form.form"}.$groups_element.options[0].selected = false; |
|
} |
|
} |
|
} |
|
|
|
|; |
|
return ($sec_element,$grplist_element,$setitems_function); |
|
|
|
} |
|
|
sub build_selection_lists { |
sub build_selection_lists { |
my ($cdom,$cnum,$type,$needroles,$needaccess,$caller) = @_; |
my ($cdom,$cnum,$type,$needroles,$needaccess,$caller) = @_; |
my ($sections,$groups,$allroles,$roleshash,$accesshash) = |
my ($sections,$groups,$allroles,$roleshash,$accesshash) = |