version 1.1075.2.109, 2016/08/14 00:24:29
|
version 1.1075.2.115, 2016/10/22 19:10:11
|
Line 936 ENDSCRT
|
Line 936 ENDSCRT
|
} |
} |
|
|
sub select_timezone { |
sub select_timezone { |
my ($name,$selected,$onchange,$includeempty)=@_; |
my ($name,$selected,$onchange,$includeempty,$disabled)=@_; |
my $output='<select name="'.$name.'" '.$onchange.'>'."\n"; |
my $output='<select name="'.$name.'" '.$onchange.$disabled.'>'."\n"; |
if ($includeempty) { |
if ($includeempty) { |
$output .= '<option value=""'; |
$output .= '<option value=""'; |
if (($selected eq '') || ($selected eq 'local')) { |
if (($selected eq '') || ($selected eq 'local')) { |
Line 958 sub select_timezone {
|
Line 958 sub select_timezone {
|
} |
} |
|
|
sub select_datelocale { |
sub select_datelocale { |
my ($name,$selected,$onchange,$includeempty)=@_; |
my ($name,$selected,$onchange,$includeempty,$disabled)=@_; |
my $output='<select name="'.$name.'" '.$onchange.'>'."\n"; |
my $output='<select name="'.$name.'" '.$onchange.$disabled.'>'."\n"; |
if ($includeempty) { |
if ($includeempty) { |
$output .= '<option value=""'; |
$output .= '<option value=""'; |
if ($selected eq '') { |
if ($selected eq '') { |
Line 1011 sub select_datelocale {
|
Line 1011 sub select_datelocale {
|
} |
} |
|
|
sub select_language { |
sub select_language { |
my ($name,$selected,$includeempty) = @_; |
my ($name,$selected,$includeempty,$noedit) = @_; |
my %langchoices; |
my %langchoices; |
if ($includeempty) { |
if ($includeempty) { |
%langchoices = ('' => 'No language preference'); |
%langchoices = ('' => 'No language preference'); |
Line 1023 sub select_language {
|
Line 1023 sub select_language {
|
} |
} |
} |
} |
%langchoices = &Apache::lonlocal::texthash(%langchoices); |
%langchoices = &Apache::lonlocal::texthash(%langchoices); |
return &select_form($selected,$name,\%langchoices); |
return &select_form($selected,$name,\%langchoices,undef,$noedit); |
} |
} |
|
|
=pod |
=pod |
Line 1744 RESIZE
|
Line 1744 RESIZE
|
|
|
} |
} |
|
|
|
sub colorfuleditor_js { |
|
return <<"COLORFULEDIT" |
|
<script type="text/javascript"> |
|
// <![CDATA[> |
|
function fold_box(curDepth, lastresource){ |
|
|
|
// we need a list because there can be several blocks you need to fold in one tag |
|
var block = document.getElementsByName('foldblock_'+curDepth); |
|
// but there is only one folding button per tag |
|
var foldbutton = document.getElementById('folding_btn_'+curDepth); |
|
|
|
if(block.item(0).style.display == 'none'){ |
|
|
|
foldbutton.value = '@{[&mt("Hide")]}'; |
|
for (i = 0; i < block.length; i++){ |
|
block.item(i).style.display = ''; |
|
} |
|
}else{ |
|
|
|
foldbutton.value = '@{[&mt("Show")]}'; |
|
for (i = 0; i < block.length; i++){ |
|
// block.item(i).style.visibility = 'collapse'; |
|
block.item(i).style.display = 'none'; |
|
} |
|
}; |
|
saveState(lastresource); |
|
} |
|
|
|
function saveState (lastresource) { |
|
|
|
var tag_list = getTagList(); |
|
if(tag_list != null){ |
|
var timestamp = new Date().getTime(); |
|
var key = lastresource; |
|
|
|
// the value pattern is: 'time;key1,value1;key2,value2; ... ' |
|
// starting with timestamp |
|
var value = timestamp+';'; |
|
|
|
// building the list of key-value pairs |
|
for(var i = 0; i < tag_list.length; i++){ |
|
value += tag_list[i]+','; |
|
value += document.getElementsByName(tag_list[i])[0].style.display+';'; |
|
} |
|
|
|
// only iterate whole storage if nothing to override |
|
if(localStorage.getItem(key) == null){ |
|
|
|
// prevent storage from growing large |
|
if(localStorage.length > 50){ |
|
var regex_getTimestamp = /^(?:\d)+;/; |
|
var oldest_timestamp = regex_getTimestamp.exec(localStorage.key(0)); |
|
var oldest_key; |
|
|
|
for(var i = 1; i < localStorage.length; i++){ |
|
if (regex_getTimestamp.exec(localStorage.key(i)) < oldest_timestamp) { |
|
oldest_key = localStorage.key(i); |
|
oldest_timestamp = regex_getTimestamp.exec(oldest_key); |
|
} |
|
} |
|
localStorage.removeItem(oldest_key); |
|
} |
|
} |
|
localStorage.setItem(key,value); |
|
} |
|
} |
|
|
|
// restore folding status of blocks (on page load) |
|
function restoreState (lastresource) { |
|
if(localStorage.getItem(lastresource) != null){ |
|
var key = lastresource; |
|
var value = localStorage.getItem(key); |
|
var regex_delTimestamp = /^\d+;/; |
|
|
|
value.replace(regex_delTimestamp, ''); |
|
|
|
var valueArr = value.split(';'); |
|
var pairs; |
|
var elements; |
|
for (var i = 0; i < valueArr.length; i++){ |
|
pairs = valueArr[i].split(','); |
|
elements = document.getElementsByName(pairs[0]); |
|
|
|
for (var j = 0; j < elements.length; j++){ |
|
elements[j].style.display = pairs[1]; |
|
if (pairs[1] == "none"){ |
|
var regex_id = /([_\\d]+)\$/; |
|
regex_id.exec(pairs[0]); |
|
document.getElementById("folding_btn"+RegExp.\$1).value = "Show"; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
function getTagList () { |
|
|
|
var stringToSearch = document.lonhomework.innerHTML; |
|
|
|
var ret = new Array(); |
|
var regex_findBlock = /(foldblock_.*?)"/g; |
|
var tag_list = stringToSearch.match(regex_findBlock); |
|
|
|
if(tag_list != null){ |
|
for(var i = 0; i < tag_list.length; i++){ |
|
ret.push(tag_list[i].replace(/"/, '')); |
|
} |
|
} |
|
return ret; |
|
} |
|
|
|
function saveScrollPosition (resource) { |
|
var tag_list = getTagList(); |
|
|
|
// we dont always want to jump to the first block |
|
// 170 is roughly above the "Problem Editing" header. we just want to save if the user scrolled down further than this |
|
if(\$(window).scrollTop() > 170){ |
|
if(tag_list != null){ |
|
var result; |
|
for(var i = 0; i < tag_list.length; i++){ |
|
if(isElementInViewport(tag_list[i])){ |
|
result += tag_list[i]+';'; |
|
} |
|
} |
|
sessionStorage.setItem('anchor_'+resource, result); |
|
} |
|
} else { |
|
// we dont need to save zero, just delete the item to leave everything tidy |
|
sessionStorage.removeItem('anchor_'+resource); |
|
} |
|
} |
|
|
|
function restoreScrollPosition(resource){ |
|
|
|
var elem = sessionStorage.getItem('anchor_'+resource); |
|
if(elem != null){ |
|
var tag_list = elem.split(';'); |
|
var elem_list; |
|
|
|
for(var i = 0; i < tag_list.length; i++){ |
|
elem_list = document.getElementsByName(tag_list[i]); |
|
|
|
if(elem_list.length > 0){ |
|
elem = elem_list[0]; |
|
break; |
|
} |
|
} |
|
elem.scrollIntoView(); |
|
} |
|
} |
|
|
|
function isElementInViewport(el) { |
|
|
|
// change to last element instead of first |
|
var elem = document.getElementsByName(el); |
|
var rect = elem[0].getBoundingClientRect(); |
|
|
|
return ( |
|
rect.top >= 0 && |
|
rect.left >= 0 && |
|
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */ |
|
rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */ |
|
); |
|
} |
|
|
|
function autosize(depth){ |
|
var cmInst = window['cm'+depth]; |
|
var fitsizeButton = document.getElementById('fitsize'+depth); |
|
|
|
// is fixed size, switching to dynamic |
|
if (sessionStorage.getItem("autosized_"+depth) == null) { |
|
cmInst.setSize("","auto"); |
|
fitsizeButton.value = "@{[&mt('Fixed size')]}"; |
|
sessionStorage.setItem("autosized_"+depth, "yes"); |
|
|
|
// is dynamic size, switching to fixed |
|
} else { |
|
cmInst.setSize("","300px"); |
|
fitsizeButton.value = "@{[&mt('Dynamic size')]}"; |
|
sessionStorage.removeItem("autosized_"+depth); |
|
} |
|
} |
|
|
|
|
|
|
|
// ]]> |
|
</script> |
|
COLORFULEDIT |
|
} |
|
|
|
sub xmleditor_js { |
|
return <<XMLEDIT |
|
<script type="text/javascript" src="/adm/jQuery/addons/jquery-scrolltofixed.js"></script> |
|
<script type="text/javascript"> |
|
// <![CDATA[> |
|
|
|
function saveScrollPosition (resource) { |
|
|
|
var scrollPos = \$(window).scrollTop(); |
|
sessionStorage.setItem(resource,scrollPos); |
|
} |
|
|
|
function restoreScrollPosition(resource){ |
|
|
|
var scrollPos = sessionStorage.getItem(resource); |
|
\$(window).scrollTop(scrollPos); |
|
} |
|
|
|
// unless internet explorer |
|
if (!(window.navigator.appName == "Microsoft Internet Explorer" && (document.documentMode || document.compatMode))){ |
|
|
|
\$(document).ready(function() { |
|
\$(".LC_edit_actionbar").scrollToFixed(\{zIndex: 100\}); |
|
}); |
|
} |
|
|
|
// inserts text at cursor position into codemirror (xml editor only) |
|
function insertText(text){ |
|
cm.focus(); |
|
var curPos = cm.getCursor(); |
|
cm.replaceRange(text.replace(/ESCAPEDSCRIPT/g,'script'), {line: curPos.line,ch: curPos.ch}); |
|
} |
|
// ]]> |
|
</script> |
|
XMLEDIT |
|
} |
|
|
|
sub insert_folding_button { |
|
my $curDepth = $Apache::lonxml::curdepth; |
|
my $lastresource = $env{'request.ambiguous'}; |
|
|
|
return "<input type=\"button\" id=\"folding_btn_$curDepth\" |
|
value=\"".&mt('Hide')."\" onclick=\"fold_box('$curDepth','$lastresource')\">"; |
|
} |
|
|
|
|
=pod |
=pod |
|
|
=head1 Excel and CSV file utility routines |
=head1 Excel and CSV file utility routines |
Line 2003 sub multiple_select_form {
|
Line 2239 sub multiple_select_form {
|
|
|
=pod |
=pod |
|
|
=item * &select_form($defdom,$name,$hashref,$onchange) |
=item * &select_form($defdom,$name,$hashref,$onchange,$readonly) |
|
|
Returns a string containing a <select name='$name' size='1'> form to |
Returns a string containing a <select name='$name' size='1'> form to |
allow a user to select options from a ref to a hash containing: |
allow a user to select options from a ref to a hash containing: |
option_name => displayed text. An optional $onchange can include |
option_name => displayed text. An optional $onchange can include |
a javascript onchange item, e.g., onchange="this.form.submit();" |
a javascript onchange item, e.g., onchange="this.form.submit();". |
|
An optional arg -- $readonly -- if true will cause the select form |
|
to be disabled, e.g., for the case where an instructor has a section- |
|
specific role, and is viewing/modifying parameters. |
|
|
See lonrights.pm for an example invocation and use. |
See lonrights.pm for an example invocation and use. |
|
|
Line 2016 See lonrights.pm for an example invocati
|
Line 2255 See lonrights.pm for an example invocati
|
|
|
#------------------------------------------- |
#------------------------------------------- |
sub select_form { |
sub select_form { |
my ($def,$name,$hashref,$onchange) = @_; |
my ($def,$name,$hashref,$onchange,$readonly) = @_; |
return unless (ref($hashref) eq 'HASH'); |
return unless (ref($hashref) eq 'HASH'); |
if ($onchange) { |
if ($onchange) { |
$onchange = ' onchange="'.$onchange.'"'; |
$onchange = ' onchange="'.$onchange.'"'; |
Line 2190 sub select_level_form {
|
Line 2429 sub select_level_form {
|
|
|
=pod |
=pod |
|
|
=item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoms,$excdoms) |
=item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoms,$excdoms,$disabled) |
|
|
Returns a string containing a <select name='$name' size='1'> form to |
Returns a string containing a <select name='$name' size='1'> form to |
allow a user to select the domain to preform an operation in. |
allow a user to select the domain to preform an operation in. |
Line 2205 The optional $onchange argument specifie
|
Line 2444 The optional $onchange argument specifie
|
|
|
The optional $incdoms is a reference to an array of domains which will be the only available options. |
The optional $incdoms is a reference to an array of domains which will be the only available options. |
|
|
The optional $excdoms is a reference to an array of domains which will be excluded from the available options. |
The optional $excdoms is a reference to an array of domains which will be excluded from the available options. |
|
|
|
The optional $disabled argument, if true, adds the disabled attribute to the select tag. |
|
|
=cut |
=cut |
|
|
#------------------------------------------- |
#------------------------------------------- |
sub select_dom_form { |
sub select_dom_form { |
my ($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoms,$excdoms) = @_; |
my ($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoms,$excdoms,$disabled) = @_; |
if ($onchange) { |
if ($onchange) { |
$onchange = ' onchange="'.$onchange.'"'; |
$onchange = ' onchange="'.$onchange.'"'; |
} |
} |
|
if ($disabled) { |
|
$disabled = ' disabled="disabled"'; |
|
} |
my (@domains,%exclude); |
my (@domains,%exclude); |
if (ref($incdoms) eq 'ARRAY') { |
if (ref($incdoms) eq 'ARRAY') { |
@domains = sort {lc($a) cmp lc($b)} (@{$incdoms}); |
@domains = sort {lc($a) cmp lc($b)} (@{$incdoms}); |
Line 2225 sub select_dom_form {
|
Line 2469 sub select_dom_form {
|
if (ref($excdoms) eq 'ARRAY') { |
if (ref($excdoms) eq 'ARRAY') { |
map { $exclude{$_} = 1; } @{$excdoms}; |
map { $exclude{$_} = 1; } @{$excdoms}; |
} |
} |
my $selectdomain = "<select name=\"$name\" size=\"1\"$onchange>\n"; |
my $selectdomain = "<select name=\"$name\" size=\"1\"$onchange$disabled>\n"; |
foreach my $dom (@domains) { |
foreach my $dom (@domains) { |
next if ($exclude{$dom}); |
next if ($exclude{$dom}); |
$selectdomain.="<option value=\"$dom\" ". |
$selectdomain.="<option value=\"$dom\" ". |
Line 4691 sub check_ip_acc {
|
Line 4935 sub check_ip_acc {
|
return 1; |
return 1; |
} |
} |
my $allowed=0; |
my $allowed=0; |
my $ip=$env{'request.host'} || $ENV{'REMOTE_ADDR'} || $clientip; |
my $ip=$ENV{'REMOTE_ADDR'} || $clientip || $env{'request.host'}; |
|
|
my $name; |
my $name; |
foreach my $pattern (split(',',$acc)) { |
foreach my $pattern (split(',',$acc)) { |
Line 5184 sub bodytag {
|
Line 5428 sub bodytag {
|
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
if ($env{'request.role'} !~ /^cr/) { |
if ($env{'request.role'} !~ /^cr/) { |
$role = &Apache::lonnet::plaintext($role,&course_type()); |
$role = &Apache::lonnet::plaintext($role,&course_type()); |
|
} elsif ($role =~ m{^cr/($match_domain)/\1-domainconfig/(\w+)$}) { |
|
$role = &mt('Helpdesk[_1]',' '.$2); |
|
} else { |
|
$role = (split(/\//,$role,4))[-1]; |
} |
} |
if ($env{'request.course.sec'}) { |
if ($env{'request.course.sec'}) { |
$role .= (' 'x2).'- '.&mt('section:').' '.$env{'request.course.sec'}; |
$role .= (' 'x2).'- '.&mt('section:').' '.$env{'request.course.sec'}; |
Line 6593 div.LC_edit_problem_footer,
|
Line 6841 div.LC_edit_problem_footer,
|
div.LC_edit_problem_footer div, |
div.LC_edit_problem_footer div, |
div.LC_edit_problem_editxml_header, |
div.LC_edit_problem_editxml_header, |
div.LC_edit_problem_editxml_header div { |
div.LC_edit_problem_editxml_header div { |
margin-top: 5px; |
z-index: 100; |
} |
} |
|
|
div.LC_edit_problem_header_title { |
div.LC_edit_problem_header_title { |
Line 6609 table.LC_edit_problem_header_title {
|
Line 6857 table.LC_edit_problem_header_title {
|
background: $tabbg; |
background: $tabbg; |
} |
} |
|
|
div.LC_edit_problem_discards { |
div.LC_edit_actionbar { |
float: left; |
background-color: $sidebg; |
padding-bottom: 5px; |
margin: 0; |
|
padding: 0; |
|
line-height: 200%; |
} |
} |
|
|
div.LC_edit_problem_saves { |
div.LC_edit_actionbar div{ |
float: right; |
padding: 0; |
padding-bottom: 5px; |
margin: 0; |
|
display: inline-block; |
} |
} |
|
|
.LC_edit_opt { |
.LC_edit_opt { |
Line 6632 div.LC_edit_problem_saves {
|
Line 6883 div.LC_edit_problem_saves {
|
margin-left: 40px; |
margin-left: 40px; |
} |
} |
|
|
|
#LC_edit_problem_codemirror div{ |
|
margin-left: 0px; |
|
} |
|
|
img.stift { |
img.stift { |
border-width: 0; |
border-width: 0; |
vertical-align: middle; |
vertical-align: middle; |
Line 6750 fieldset > legend {
|
Line 7005 fieldset > legend {
|
ol.LC_primary_menu { |
ol.LC_primary_menu { |
margin: 0; |
margin: 0; |
padding: 0; |
padding: 0; |
background-color: $pgbg_or_bgcolor; |
|
} |
} |
|
|
ol#LC_PathBreadcrumbs { |
ol#LC_PathBreadcrumbs { |
Line 6762 ol.LC_primary_menu li {
|
Line 7016 ol.LC_primary_menu li {
|
vertical-align: middle; |
vertical-align: middle; |
text-align: left; |
text-align: left; |
list-style: none; |
list-style: none; |
|
position: relative; |
float: left; |
float: left; |
|
z-index: 100; /* will be displayed above codemirror and underneath the help-layer */ |
|
line-height: 1.5em; |
} |
} |
|
|
ol.LC_primary_menu li a { |
ol.LC_primary_menu li a, |
|
ol.LC_primary_menu li p { |
display: block; |
display: block; |
margin: 0; |
margin: 0; |
padding: 0 5px 0 10px; |
padding: 0 5px 0 10px; |
text-decoration: none; |
text-decoration: none; |
} |
} |
|
|
ol.LC_primary_menu li ul { |
ol.LC_primary_menu li p span.LC_primary_menu_innertitle { |
|
display: inline-block; |
|
width: 95%; |
|
text-align: left; |
|
} |
|
|
|
ol.LC_primary_menu li p span.LC_primary_menu_innerarrow { |
|
display: inline-block; |
|
width: 5%; |
|
float: right; |
|
text-align: right; |
|
font-size: 70%; |
|
} |
|
|
|
ol.LC_primary_menu ul { |
display: none; |
display: none; |
width: 10em; |
width: 15em; |
background-color: $data_table_light; |
background-color: $data_table_light; |
|
position: absolute; |
|
top: 100%; |
|
} |
|
|
|
ol.LC_primary_menu ul ul { |
|
left: 100%; |
|
top: 0; |
} |
} |
|
|
ol.LC_primary_menu li:hover ul, ol.LC_primary_menu li.hover ul { |
ol.LC_primary_menu li:hover > ul, ol.LC_primary_menu li.hover > ul { |
display: block; |
display: block; |
position: absolute; |
position: absolute; |
margin: 0; |
margin: 0; |
Line 6787 ol.LC_primary_menu li:hover ul, ol.LC_pr
|
Line 7066 ol.LC_primary_menu li:hover ul, ol.LC_pr
|
} |
} |
|
|
ol.LC_primary_menu li:hover li, ol.LC_primary_menu li.hover li { |
ol.LC_primary_menu li:hover li, ol.LC_primary_menu li.hover li { |
|
/* First Submenu -> size should be smaller than the menu title of the whole menu */ |
font-size: 90%; |
font-size: 90%; |
vertical-align: top; |
vertical-align: top; |
float: none; |
float: none; |
border-left: 1px solid black; |
border-left: 1px solid black; |
border-right: 1px solid black; |
border-right: 1px solid black; |
|
/* A dark bottom border to visualize different menu options; |
|
overwritten in the create_submenu routine for the last border-bottom of the menu */ |
|
border-bottom: 1px solid $data_table_dark; |
} |
} |
|
|
ol.LC_primary_menu li:hover li a, ol.LC_primary_menu li.hover li a { |
ol.LC_primary_menu li li p:hover { |
background-color:$data_table_light; |
color:$button_hover; |
|
text-decoration:none; |
|
background-color:$data_table_dark; |
} |
} |
|
|
ol.LC_primary_menu li li a:hover { |
ol.LC_primary_menu li li a:hover { |
Line 6803 ol.LC_primary_menu li li a:hover {
|
Line 7088 ol.LC_primary_menu li li a:hover {
|
background-color:$data_table_dark; |
background-color:$data_table_dark; |
} |
} |
|
|
|
/* Font-size equal to the size of the predecessors*/ |
|
ol.LC_primary_menu li:hover li li { |
|
font-size: 100%; |
|
} |
|
|
ol.LC_primary_menu li img { |
ol.LC_primary_menu li img { |
vertical-align: bottom; |
vertical-align: bottom; |
height: 1.1em; |
height: 1.1em; |
Line 6859 ul#LC_secondary_menu li {
|
Line 7149 ul#LC_secondary_menu li {
|
font-weight: bold; |
font-weight: bold; |
line-height: 1.8em; |
line-height: 1.8em; |
border-right: 1px solid black; |
border-right: 1px solid black; |
vertical-align: middle; |
|
float: left; |
float: left; |
} |
} |
|
|
Line 9227 sub get_secgrprole_info {
|
Line 9516 sub get_secgrprole_info {
|
} |
} |
|
|
sub user_picker { |
sub user_picker { |
my ($dom,$srch,$forcenewuser,$caller,$cancreate,$usertype,$context) = @_; |
my ($dom,$srch,$forcenewuser,$caller,$cancreate,$usertype,$context,$fixeddom) = @_; |
my $currdom = $dom; |
my $currdom = $dom; |
|
my @alldoms = &Apache::lonnet::all_domains(); |
|
if (@alldoms == 1) { |
|
my %domsrch = &Apache::lonnet::get_dom('configuration', |
|
['directorysrch'],$alldoms[0]); |
|
my $domdesc = &Apache::lonnet::domain($alldoms[0],'description'); |
|
my $showdom = $domdesc; |
|
if ($showdom eq '') { |
|
$showdom = $dom; |
|
} |
|
if (ref($domsrch{'directorysrch'}) eq 'HASH') { |
|
if ((!$domsrch{'directorysrch'}{'available'}) && |
|
($domsrch{'directorysrch'}{'lcavailable'} eq '0')) { |
|
return (&mt('LON-CAPA directory search is not available in domain: [_1]',$showdom),0); |
|
} |
|
} |
|
} |
my %curr_selected = ( |
my %curr_selected = ( |
srchin => 'dom', |
srchin => 'dom', |
srchby => 'lastname', |
srchby => 'lastname', |
Line 9275 sub user_picker {
|
Line 9580 sub user_picker {
|
); |
); |
&html_escape(\%html_lt); |
&html_escape(\%html_lt); |
&js_escape(\%js_lt); |
&js_escape(\%js_lt); |
my $domform = &select_dom_form($currdom,'srchdomain',1,1); |
my $domform; |
|
if ($fixeddom) { |
|
$domform = &select_dom_form($currdom,'srchdomain',1,1,undef,[$currdom]); |
|
} else { |
|
$domform = &select_dom_form($currdom,'srchdomain',1,1); |
|
} |
my $srchinsel = ' <select name="srchin">'; |
my $srchinsel = ' <select name="srchin">'; |
|
|
my @srchins = ('crs','dom','alc','instd'); |
my @srchins = ('crs','dom','alc','instd'); |
Line 9469 END_BLOCK
|
Line 9779 END_BLOCK
|
&Apache::lonhtmlcommon::row_closure(1). |
&Apache::lonhtmlcommon::row_closure(1). |
&Apache::lonhtmlcommon::end_pick_box(). |
&Apache::lonhtmlcommon::end_pick_box(). |
'<br />'; |
'<br />'; |
return $output; |
return ($output,1); |
} |
} |
|
|
sub user_rule_check { |
sub user_rule_check { |
Line 14602 sub construct_course {
|
Line 14912 sub construct_course {
|
if ($args->{'setcontent'}) { |
if ($args->{'setcontent'}) { |
$cenv{'question.email'}=$args->{'ccuname'}.':'.$args->{'ccdomain'}; |
$cenv{'question.email'}=$args->{'ccuname'}.':'.$args->{'ccdomain'}; |
} |
} |
|
if ($args->{'setcomment'}) { |
|
$cenv{'comment.email'}=$args->{'ccuname'}.':'.$args->{'ccdomain'}; |
|
} |
} |
} |
if ($args->{'reshome'}) { |
if ($args->{'reshome'}) { |
$cenv{'reshome'}=$args->{'reshome'}.'/'; |
$cenv{'reshome'}=$args->{'reshome'}.'/'; |