version 1.736, 2009/01/28 13:49:50
|
version 1.981, 2010/09/24 13:15:41
|
Line 406 sub studentbrowser_javascript {
|
Line 406 sub studentbrowser_javascript {
|
|| ($env{'request.role'}=~/^(au|dc|su)/) |
|| ($env{'request.role'}=~/^(au|dc|su)/) |
) { return ''; } |
) { return ''; } |
return (<<'ENDSTDBRW'); |
return (<<'ENDSTDBRW'); |
<script type="text/javascript" language="Javascript" > |
<script type="text/javascript" language="Javascript"> |
|
// <![CDATA[ |
var stdeditbrowser; |
var stdeditbrowser; |
function openstdbrowser(formname,uname,udom,roleflag,ignorefilter) { |
function openstdbrowser(formname,uname,udom,roleflag,ignorefilter,courseadvonly) { |
var url = '/adm/pickstudent?'; |
var url = '/adm/pickstudent?'; |
var filter; |
var filter; |
if (!ignorefilter) { |
if (!ignorefilter) { |
Line 422 sub studentbrowser_javascript {
|
Line 423 sub studentbrowser_javascript {
|
url += 'form=' + formname + '&unameelement='+uname+ |
url += 'form=' + formname + '&unameelement='+uname+ |
'&udomelement='+udom; |
'&udomelement='+udom; |
if (roleflag) { url+="&roles=1"; } |
if (roleflag) { url+="&roles=1"; } |
|
if (courseadvonly) { url+="&courseadvonly=1"; } |
var title = 'Student_Browser'; |
var title = 'Student_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'); |
stdeditbrowser.focus(); |
stdeditbrowser.focus(); |
} |
} |
|
// ]]> |
</script> |
</script> |
ENDSTDBRW |
ENDSTDBRW |
} |
} |
|
|
sub selectstudent_link { |
sub selectstudent_link { |
my ($form,$unameele,$udomele)=@_; |
my ($form,$unameele,$udomele,$courseadvonly)=@_; |
|
my $callargs = "'".$form."','".$unameele."','".$udomele."'"; |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
if (!&Apache::lonnet::allowed('srm',$env{'request.course.id'}) |
&& !&Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
&& !&Apache::lonnet::allowed('srm',$env{'request.course.id'}. |
'/'.$env{'request.course.sec'})) { |
'/'.$env{'request.course.sec'})) { |
return ''; |
return ''; |
} |
} |
return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele. |
if ($courseadvonly) { |
'","'.$udomele.'");'."'>".&mt('Select User')."</a>"; |
$callargs .= ",'',1,1"; |
|
} |
|
return '<span class="LC_nobreak">'. |
|
'<a href="javascript:openstdbrowser('.$callargs.');">'. |
|
&mt('Select User').'</a></span>'; |
} |
} |
if ($env{'request.role'}=~/^(au|dc|su)/) { |
if ($env{'request.role'}=~/^(au|dc|su)/) { |
return "<a href='".'javascript:openstdbrowser("'.$form.'","'.$unameele. |
$callargs .= ",1"; |
'","'.$udomele.'",1);'."'>".&mt('Select User')."</a>"; |
return '<span class="LC_nobreak">'. |
|
'<a href="javascript:openstdbrowser('.$callargs.');">'. |
|
&mt('Select User').'</a></span>'; |
} |
} |
return ''; |
return ''; |
} |
} |
|
|
sub authorbrowser_javascript { |
sub authorbrowser_javascript { |
return <<"ENDAUTHORBRW"; |
return <<"ENDAUTHORBRW"; |
<script type="text/javascript"> |
<script type="text/javascript" language="JavaScript"> |
|
// <![CDATA[ |
var stdeditbrowser; |
var stdeditbrowser; |
|
|
function openauthorbrowser(formname,udom) { |
function openauthorbrowser(formname,udom) { |
Line 465 function openauthorbrowser(formname,udom
|
Line 476 function openauthorbrowser(formname,udom
|
stdeditbrowser.focus(); |
stdeditbrowser.focus(); |
} |
} |
|
|
|
// ]]> |
</script> |
</script> |
ENDAUTHORBRW |
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 Group - for which you wish to add/modify a user role'); |
my $wintitle = 'Course_Browser'; |
my $output = ' |
if ($crstype eq 'Community') { |
<script type="text/javascript"> |
$wintitle = 'Community_Browser'; |
|
} |
|
my $id_functions = &javascript_index_functions(); |
|
my $output = ' |
|
<script type="text/javascript" language="JavaScript"> |
|
// <![CDATA[ |
var stdeditbrowser;'."\n"; |
var stdeditbrowser;'."\n"; |
$output .= <<"ENDSTDBRW"; |
|
function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag,crstype) { |
$output .= <<"ENDSTDBRW"; |
|
function opencrsbrowser(formname,uname,udom,desc,extra_element,multflag,type,type_elem) { |
var url = '/adm/pickcourse?'; |
var url = '/adm/pickcourse?'; |
var domainfilter = ''; |
|
var formid = getFormIdByName(formname); |
var formid = getFormIdByName(formname); |
if (formid > -1) { |
var domainfilter = getDomainFromSelectbox(formname,udom); |
var domid = getIndexByName(formid,udom); |
|
if (domid > -1) { |
|
if (document.forms[formid].elements[domid].type == 'select-one') { |
|
domainfilter=document.forms[formid].elements[domid].options[document.forms[formid].elements[domid].selectedIndex].value; |
|
} |
|
if (document.forms[formid].elements[domid].type == 'hidden') { |
|
domainfilter=document.forms[formid].elements[domid].value; |
|
} |
|
} |
|
} |
|
if (domainfilter != null) { |
if (domainfilter != null) { |
if (domainfilter != '') { |
if (domainfilter != '') { |
url += 'domainfilter='+domainfilter+'&'; |
url += 'domainfilter='+domainfilter+'&'; |
Line 509 sub coursebrowser_javascript {
|
Line 516 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; |
|
} |
} |
} |
} |
} |
} |
} |
if (multflag !=null && multflag != '') { |
if (type != null && type != '') { |
url += '&multiple='+multflag; |
url += '&type='+type; |
} |
} |
if (crstype == 'Course/Group') { |
if (type_elem != null && type_elem != '') { |
if (formname == 'cu') { |
url += '&typeelement='+type_elem; |
crstype = document.cu.crstype.options[document.cu.crstype.selectedIndex].value; |
|
if (crstype == "") { |
|
alert("$crs_or_grp_alert"); |
|
return; |
|
} |
|
} |
|
} |
} |
if (crstype !=null && crstype != '') { |
if (formname == 'ccrs') { |
url += '&type='+crstype; |
var ownername = document.forms[formid].ccuname.value; |
|
var ownerdom = document.forms[formid].ccdomain.options[document.forms[formid].ccdomain.selectedIndex].value; |
|
url += '&cloner='+ownername+':'+ownerdom; |
|
} |
|
if (multflag !=null && multflag != '') { |
|
url += '&multiple='+multflag; |
} |
} |
var title = 'Course_Browser'; |
var title = '$wintitle'; |
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'); |
stdeditbrowser.focus(); |
stdeditbrowser.focus(); |
} |
} |
|
$id_functions |
|
ENDSTDBRW |
|
if (($sec_element ne '') || ($role_element ne '')) { |
|
$output .= &setsec_javascript($sec_element,$formname,$role_element); |
|
} |
|
$output .= ' |
|
// ]]> |
|
</script>'; |
|
return $output; |
|
} |
|
|
function getFormIdByName(formname) { |
sub javascript_index_functions { |
for (var i=0;i<document.forms.length;i++) { |
return <<"ENDJS"; |
if (document.forms[i].name == formname) { |
|
return i; |
function getFormIdByName(formname) { |
} |
for (var i=0;i<document.forms.length;i++) { |
|
if (document.forms[i].name == formname) { |
|
return i; |
|
} |
|
} |
|
return -1; |
|
} |
|
|
|
function getIndexByName(formid,item) { |
|
for (var i=0;i<document.forms[formid].elements.length;i++) { |
|
if (document.forms[formid].elements[i].name == item) { |
|
return i; |
} |
} |
return -1; |
|
} |
} |
|
return -1; |
|
} |
|
|
function getIndexByName(formid,item) { |
function getDomainFromSelectbox(formname,udom) { |
for (var i=0;i<document.forms[formid].elements.length;i++) { |
var userdom; |
if (document.forms[formid].elements[i].name == item) { |
var formid = getFormIdByName(formname); |
return i; |
if (formid > -1) { |
|
var domid = getIndexByName(formid,udom); |
|
if (domid > -1) { |
|
if (document.forms[formid].elements[domid].type == 'select-one') { |
|
userdom=document.forms[formid].elements[domid].options[document.forms[formid].elements[domid].selectedIndex].value; |
|
} |
|
if (document.forms[formid].elements[domid].type == 'hidden') { |
|
userdom=document.forms[formid].elements[domid].value; |
} |
} |
} |
} |
return -1; |
|
} |
} |
ENDSTDBRW |
return userdom; |
if ($sec_element ne '') { |
} |
$output .= &setsec_javascript($sec_element,$formname); |
|
|
ENDJS |
|
|
|
} |
|
|
|
sub userbrowser_javascript { |
|
my $id_functions = &javascript_index_functions(); |
|
return <<"ENDUSERBRW"; |
|
|
|
function openuserbrowser(formname,uname,udom,ulast,ufirst,uemail,hideudom,crsdom,caller) { |
|
var url = '/adm/pickuser?'; |
|
var userdom = getDomainFromSelectbox(formname,udom); |
|
if (userdom != null) { |
|
if (userdom != '') { |
|
url += 'srchdom='+userdom+'&'; |
|
} |
} |
} |
$output .= ' |
url += 'form=' + formname + '&unameelement='+uname+ |
</script>'; |
'&udomelement='+udom+ |
return $output; |
'&ulastelement='+ulast+ |
|
'&ufirstelement='+ufirst+ |
|
'&uemailelement='+uemail+ |
|
'&hideudomelement='+hideudom+ |
|
'&coursedom='+crsdom; |
|
if ((caller != null) && (caller != undefined)) { |
|
url += '&caller='+caller; |
|
} |
|
var title = 'User_Browser'; |
|
var options = 'scrollbars=1,resizable=1,menubar=0'; |
|
options += ',width=700,height=600'; |
|
var stdeditbrowser = open(url,title,options,'1'); |
|
stdeditbrowser.focus(); |
|
} |
|
|
|
function fix_domain (formname,udom,origdom,uname) { |
|
var formid = getFormIdByName(formname); |
|
if (formid > -1) { |
|
var unameid = getIndexByName(formid,uname); |
|
var domid = getIndexByName(formid,udom); |
|
var hidedomid = getIndexByName(formid,origdom); |
|
if (hidedomid > -1) { |
|
var fixeddom = document.forms[formid].elements[hidedomid].value; |
|
var unameval = document.forms[formid].elements[unameid].value; |
|
if ((fixeddom != '') && (fixeddom != undefined) && (fixeddom != null) && (unameval != '') && (unameval != undefined) && (unameval != null)) { |
|
if (domid > -1) { |
|
var slct = document.forms[formid].elements[domid]; |
|
if (slct.type == 'select-one') { |
|
var i; |
|
for (i=0;i<slct.length;i++) { |
|
if (slct.options[i].value==fixeddom) { slct.selectedIndex=i; } |
|
} |
|
} |
|
if (slct.type == 'hidden') { |
|
slct.value = fixeddom; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
return; |
|
} |
|
|
|
$id_functions |
|
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 595 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, |
return "<a href='".'javascript:opencrsbrowser("'.$form.'","'.$unameele. |
$typeelement) = @_; |
'","'.$udomele.'","'.$desc.'","'.$extra_element.'","'.$multflag.'","'.$selecttype.'");'."'>".&mt('Select Course')."</a>"; |
my $type = $selecttype; |
|
my $linktext = &mt('Select Course'); |
|
if ($selecttype eq 'Community') { |
|
$linktext = &mt('Select Community'); |
|
} elsif ($selecttype eq 'Course/Community') { |
|
$linktext = &mt('Select Course/Community'); |
|
$type = ''; |
|
} |
|
return '<span class="LC_nobreak">' |
|
."<a href='" |
|
.'javascript:opencrsbrowser("'.$form.'","'.$unameele |
|
.'","'.$udomele.'","'.$desc.'","'.$extra_element |
|
.'","'.$multflag.'","'.$type.'","'.$typeelement.'");' |
|
."'>".$linktext.'</a>' |
|
.'</span>'; |
} |
} |
|
|
sub selectauthor_link { |
sub selectauthor_link { |
Line 612 sub selectauthor_link {
|
Line 782 sub selectauthor_link {
|
&mt('Select Author').'</a>'; |
&mt('Select Author').'</a>'; |
} |
} |
|
|
|
sub selectuser_link { |
|
my ($form,$unameelem,$domelem,$lastelem,$firstelem,$emailelem,$hdomelem, |
|
$coursedom,$linktext,$caller) = @_; |
|
return '<a href="javascript:openuserbrowser('."'$form','$unameelem','$domelem',". |
|
"'$lastelem','$firstelem','$emailelem','$hdomelem','$coursedom','$caller'". |
|
');">'.$linktext.'</a>'; |
|
} |
|
|
sub check_uncheck_jscript { |
sub check_uncheck_jscript { |
my $jscript = <<"ENDSCRT"; |
my $jscript = <<"ENDSCRT"; |
function checkAll(field) { |
function checkAll(field) { |
Line 710 sub select_datelocale {
|
Line 888 sub select_datelocale {
|
return $output; |
return $output; |
} |
} |
|
|
|
sub select_language { |
|
my ($name,$selected,$includeempty) = @_; |
|
my %langchoices; |
|
if ($includeempty) { |
|
%langchoices = ('' => 'No language preference'); |
|
} |
|
foreach my $id (&languageids()) { |
|
my $code = &supportedlanguagecode($id); |
|
if ($code) { |
|
$langchoices{$code} = &plainlanguagedescription($id); |
|
} |
|
} |
|
return &select_form($selected,$name,\%langchoices); |
|
} |
|
|
=pod |
=pod |
|
|
=item * &linked_select_forms(...) |
=item * &linked_select_forms(...) |
Line 796 sub linked_select_forms {
|
Line 989 sub linked_select_forms {
|
my $first = "document.$formname.$firstselectname"; |
my $first = "document.$formname.$firstselectname"; |
# output the javascript to do the changing |
# output the javascript to do the changing |
my $result = ''; |
my $result = ''; |
$result.="<script type=\"text/javascript\">\n"; |
$result.='<script type="text/javascript" language="JavaScript">'."\n"; |
|
$result.="// <![CDATA[\n"; |
$result.="var select2data = new Object();\n"; |
$result.="var select2data = new Object();\n"; |
$" = '","'; |
$" = '","'; |
my $debug = ''; |
my $debug = ''; |
Line 842 function select1_changed() {
|
Line 1036 function select1_changed() {
|
} |
} |
} |
} |
} |
} |
|
// ]]> |
</script> |
</script> |
END |
END |
# output the initial values for the selection lists |
# output the initial values for the selection lists |
Line 877 END
|
Line 1072 END
|
|
|
=pod |
=pod |
|
|
=item * &help_open_topic($topic,$text,$stayOnPage,$width,$height) |
=item * &help_open_topic($topic,$text,$stayOnPage,$width,$height,$imgid) |
|
|
Returns a string corresponding to an HTML link to the given help |
Returns a string corresponding to an HTML link to the given help |
$topic, where $topic corresponds to the name of a .tex file in |
$topic, where $topic corresponds to the name of a .tex file in |
Line 895 a new window using Javascript. (Default
|
Line 1090 a new window using Javascript. (Default
|
|
|
$width and $height are optional numerical parameters that will |
$width and $height are optional numerical parameters that will |
override the width and height of the popped up window, which may |
override the width and height of the popped up window, which may |
be useful for certain help topics with big pictures included. |
be useful for certain help topics with big pictures included. |
|
|
|
$imgid is the id of the img tag used for the help icon. This may be |
|
used in a javascript call to switch the image src. See |
|
lonhtmlcommon::htmlareaselectactive() for an example. |
|
|
=cut |
=cut |
|
|
sub help_open_topic { |
sub help_open_topic { |
my ($topic, $text, $stayOnPage, $width, $height) = @_; |
my ($topic, $text, $stayOnPage, $width, $height, $imgid) = @_; |
$text = "" if (not defined $text); |
$text = "" if (not defined $text); |
$stayOnPage = 0 if (not defined $stayOnPage); |
$stayOnPage = 0 if (not defined $stayOnPage); |
if ($env{'browser.interface'} eq 'textual') { |
|
$stayOnPage=1; |
|
} |
|
$width = 350 if (not defined $width); |
$width = 350 if (not defined $width); |
$height = 400 if (not defined $height); |
$height = 400 if (not defined $height); |
my $filename = $topic; |
my $filename = $topic; |
Line 923 sub help_open_topic {
|
Line 1119 sub help_open_topic {
|
} |
} |
|
|
# Add the text |
# Add the text |
if ($text ne "") { |
if ($text ne "") { |
$template .= |
$template.='<span class="LC_help_open_topic">' |
"<table bgcolor='#3333AA' cellspacing='1' cellpadding='1' border='0'><tr>". |
.'<a target="_top" href="'.$link.'">' |
"<td bgcolor='#5555FF'><a target=\"_top\" href=\"$link\"><span style=\"color:#FFFFFF;font-size:10pt;\">$text</span></a>"; |
.$text.'</a>'; |
} |
} |
|
|
# Add the graphic |
# (Always) Add the graphic |
my $title = &mt('Online Help'); |
my $title = &mt('Online Help'); |
my $helpicon=&lonhttpdurl("/adm/help/help.png"); |
my $helpicon=&lonhttpdurl("/adm/help/help.png"); |
$template .= <<"ENDTEMPLATE"; |
if ($imgid ne '') { |
<a target="_top" href="$link" title="$title"><img src="$helpicon" border="0" alt="(Help: $topic)" /></a> |
$imgid = ' id="'.$imgid.'"'; |
ENDTEMPLATE |
} |
if ($text ne '') { $template.='</td></tr></table>' }; |
$template.=' <a target="_top" href="'.$link.'" title="'.$title.'">' |
|
.'<img src="'.$helpicon.'" border="0"' |
|
.' alt="'.&mt('Help: [_1]',$topic).'"' |
|
.' title="'.$title.'" style="vertical-align:middle;"'.$imgid |
|
.' /></a>'; |
|
if ($text ne "") { |
|
$template.='</span>'; |
|
} |
return $template; |
return $template; |
|
|
} |
} |
Line 947 sub helpLatexCheatsheet {
|
Line 1150 sub helpLatexCheatsheet {
|
my $out; |
my $out; |
my $addOther = ''; |
my $addOther = ''; |
if ($topic) { |
if ($topic) { |
$addOther = &Apache::loncommon::help_open_topic($topic,$text, |
$addOther = '<span>'.&Apache::loncommon::help_open_topic($topic,&mt($text), |
undef, undef, 600). |
undef, undef, 600). |
'</td><td>'; |
'</span> '; |
} |
} |
$out = '<table><tr><td>'. |
$out = '<span>' # Start cheatsheet |
$addOther . |
.$addOther |
&Apache::loncommon::help_open_topic("Greek_Symbols",&mt('Greek Symbols'), |
.'<span>' |
undef,undef,600). |
.&Apache::loncommon::help_open_topic('Greek_Symbols',&mt('Greek Symbols'), |
'</td><td>'. |
undef,undef,600) |
&Apache::loncommon::help_open_topic("Other_Symbols",&mt('Other Symbols'), |
.'</span> <span>' |
undef,undef,600). |
.&Apache::loncommon::help_open_topic('Other_Symbols',&mt('Other Symbols'), |
'</td>'; |
undef,undef,600) |
|
.'</span>'; |
unless ($not_author) { |
unless ($not_author) { |
$out .= '<td>'. |
$out .= ' <span>' |
&Apache::loncommon::help_open_topic("Authoring_Output_Tags",&mt('Output Tags'), |
.&Apache::loncommon::help_open_topic('Authoring_Output_Tags',&mt('Output Tags'), |
undef,undef,600). |
undef,undef,600) |
'</td>'; |
.'</span>'; |
} |
} |
$out .= '</tr></table>'; |
$out .= '</span>'; # End cheatsheet |
return $out; |
return $out; |
} |
} |
|
|
Line 973 sub general_help {
|
Line 1177 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 993 sub update_help_link {
|
Line 1197 sub update_help_link {
|
my $banner_link = "/adm/helpmenu?page=banner&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage"; |
my $banner_link = "/adm/helpmenu?page=banner&topic=$topic&component_help=$component_help&faq=$faq&bug=$bug&origurl=$origurl&stamp=$timestamp&stayonpage=$stayOnPage"; |
my $output .= <<"ENDOUTPUT"; |
my $output .= <<"ENDOUTPUT"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
banner_link = '$banner_link'; |
banner_link = '$banner_link'; |
|
// ]]> |
</script> |
</script> |
ENDOUTPUT |
ENDOUTPUT |
return $output; |
return $output; |
Line 1003 ENDOUTPUT
|
Line 1209 ENDOUTPUT
|
sub help_open_menu { |
sub help_open_menu { |
my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text) |
my ($topic,$component_help,$faq,$bug,$stayOnPage,$width,$height,$text) |
= @_; |
= @_; |
$stayOnPage = 0 if (not defined $stayOnPage); |
$stayOnPage = 1; |
# only use pop-up help (stayOnPage == 0) |
|
# if environment.remote is on (using remote control UI) |
|
if ($env{'browser.interface'} eq 'textual' || |
|
$env{'environment.remote'} eq 'off' ) { |
|
$stayOnPage=1; |
|
} |
|
my $output; |
my $output; |
if ($component_help) { |
if ($component_help) { |
if (!$text) { |
if (!$text) { |
Line 1030 sub help_open_menu {
|
Line 1230 sub help_open_menu {
|
sub top_nav_help { |
sub top_nav_help { |
my ($text) = @_; |
my ($text) = @_; |
$text = &mt($text); |
$text = &mt($text); |
my $stay_on_page = |
my $stay_on_page = 1; |
($env{'browser.interface'} eq 'textual' || |
|
$env{'environment.remote'} eq 'off' ); |
|
my $link = ($stay_on_page) ? "javascript:helpMenu('display')" |
my $link = ($stay_on_page) ? "javascript:helpMenu('display')" |
: "javascript:helpMenu('open')"; |
: "javascript:helpMenu('open')"; |
my $banner_link = &update_help_link(undef,undef,undef,undef,$stay_on_page); |
my $banner_link = &update_help_link(undef,undef,undef,undef,$stay_on_page); |
Line 1047 END
|
Line 1246 END
|
|
|
sub help_menu_js { |
sub help_menu_js { |
my ($text) = @_; |
my ($text) = @_; |
|
my $stayOnPage = 1; |
my $stayOnPage = |
|
($env{'browser.interface'} eq 'textual' || |
|
$env{'environment.remote'} eq 'off' ); |
|
|
|
my $width = 620; |
my $width = 620; |
my $height = 600; |
my $height = 600; |
my $helptopic=&general_help(); |
my $helptopic=&general_help(); |
Line 1070 sub help_menu_js {
|
Line 1265 sub help_menu_js {
|
|
|
my $template .= <<"ENDTEMPLATE"; |
my $template .= <<"ENDTEMPLATE"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <!-- BEGIN LON-CAPA Internal |
|
// <![CDATA[ |
// <![CDATA[ |
|
// <!-- BEGIN LON-CAPA Internal |
var banner_link = ''; |
var banner_link = ''; |
function helpMenu(target) { |
function helpMenu(target) { |
var caller = this; |
var caller = this; |
Line 1096 function writeHelp(caller) {
|
Line 1291 function writeHelp(caller) {
|
caller.document.close() |
caller.document.close() |
caller.focus() |
caller.focus() |
} |
} |
// ]]> |
|
// END LON-CAPA Internal --> |
// END LON-CAPA Internal --> |
|
// ]]> |
</script> |
</script> |
ENDTEMPLATE |
ENDTEMPLATE |
return $template; |
return $template; |
Line 1108 sub help_open_bug {
|
Line 1303 sub help_open_bug {
|
unless ($env{'user.adv'}) { return ''; } |
unless ($env{'user.adv'}) { return ''; } |
unless ($Apache::lonnet::perlvar{'BugzillaHost'}) { return ''; } |
unless ($Apache::lonnet::perlvar{'BugzillaHost'}) { return ''; } |
$text = "" if (not defined $text); |
$text = "" if (not defined $text); |
$stayOnPage = 0 if (not defined $stayOnPage); |
|
if ($env{'browser.interface'} eq 'textual' || |
|
$env{'environment.remote'} eq 'off' ) { |
|
$stayOnPage=1; |
$stayOnPage=1; |
} |
|
$width = 600 if (not defined $width); |
$width = 600 if (not defined $width); |
$height = 600 if (not defined $height); |
$height = 600 if (not defined $height); |
|
|
Line 1153 sub help_open_faq {
|
Line 1344 sub help_open_faq {
|
unless ($env{'user.adv'}) { return ''; } |
unless ($env{'user.adv'}) { return ''; } |
unless ($Apache::lonnet::perlvar{'FAQHost'}) { return ''; } |
unless ($Apache::lonnet::perlvar{'FAQHost'}) { return ''; } |
$text = "" if (not defined $text); |
$text = "" if (not defined $text); |
$stayOnPage = 0 if (not defined $stayOnPage); |
|
if ($env{'browser.interface'} eq 'textual' || |
|
$env{'environment.remote'} eq 'off' ) { |
|
$stayOnPage=1; |
$stayOnPage=1; |
} |
|
$width = 350 if (not defined $width); |
$width = 350 if (not defined $width); |
$height = 400 if (not defined $height); |
$height = 400 if (not defined $height); |
|
|
Line 1365 sub resize_textarea_js {
|
Line 1552 sub resize_textarea_js {
|
my $geometry = &viewport_geometry_js(); |
my $geometry = &viewport_geometry_js(); |
return <<"RESIZE"; |
return <<"RESIZE"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
$geometry |
$geometry |
|
|
function getX(element) { |
function getX(element) { |
Line 1403 function resize_textarea(textarea_id,bot
|
Line 1591 function resize_textarea(textarea_id,bot
|
} |
} |
textarea.style.height=new_height+'px'; |
textarea.style.height=new_height+'px'; |
} |
} |
|
// ]]> |
</script> |
</script> |
RESIZE |
RESIZE |
|
|
Line 1523 sub create_workbook {
|
Line 1712 sub create_workbook {
|
my $workbook = Spreadsheet::WriteExcel->new('/home/httpd'.$filename); |
my $workbook = Spreadsheet::WriteExcel->new('/home/httpd'.$filename); |
if (! defined($workbook)) { |
if (! defined($workbook)) { |
$r->log_error("Error creating excel spreadsheet $filename: $!"); |
$r->log_error("Error creating excel spreadsheet $filename: $!"); |
$r->print('<p>'.&mt("Unable to create new Excel file. ". |
$r->print( |
"This error has been logged. ". |
'<p class="LC_error">' |
"Please alert your LON-CAPA administrator"). |
.&mt('Problems occurred in creating the new Excel file.') |
'</p>'); |
.' '.&mt('This error has been logged.') |
|
.' '.&mt('Please alert your LON-CAPA administrator.') |
|
.'</p>' |
|
); |
return (undef); |
return (undef); |
} |
} |
# |
# |
Line 1566 sub create_text_file {
|
Line 1758 sub create_text_file {
|
$fh = Apache::File->new('>/home/httpd'.$filename); |
$fh = Apache::File->new('>/home/httpd'.$filename); |
if (! defined($fh)) { |
if (! defined($fh)) { |
$r->log_error("Couldn't open $filename for output $!"); |
$r->log_error("Couldn't open $filename for output $!"); |
$r->print(&mt('Problems occurred in creating the output file. ' |
$r->print( |
.'This error has been logged. ' |
'<p class="LC_error">' |
.'Please alert your LON-CAPA administrator.')); |
.&mt('Problems occurred in creating the output file.') |
|
.' '.&mt('This error has been logged.') |
|
.' '.&mt('Please alert your LON-CAPA administrator.') |
|
.'</p>' |
|
); |
} |
} |
return ($fh,$filename) |
return ($fh,$filename) |
} |
} |
Line 1597 sub domain_select {
|
Line 1793 sub domain_select {
|
return &multiple_select_form($name,$value,4,\%domains); |
return &multiple_select_form($name,$value,4,\%domains); |
} else { |
} else { |
$domains{'select_form_order'} = [sort {lc($a) cmp lc($b) } (keys(%domains))]; |
$domains{'select_form_order'} = [sort {lc($a) cmp lc($b) } (keys(%domains))]; |
return &select_form($name,$value,%domains); |
return &select_form($name,$value,\%domains); |
} |
} |
} |
} |
|
|
Line 1659 sub multiple_select_form {
|
Line 1855 sub multiple_select_form {
|
|
|
=pod |
=pod |
|
|
=item * &select_form($defdom,$name,%hash) |
=item * &select_form($defdom,$name,$hashref,$onchange) |
|
|
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 hash option_name => displayed text. |
allow a user to select options from a ref to a hash containing: |
|
option_name => displayed text. An optional $onchange can include |
|
a javascript onchange item, e.g., onchange="this.form.submit();" |
|
|
See lonrights.pm for an example invocation and use. |
See lonrights.pm for an example invocation and use. |
|
|
=cut |
=cut |
|
|
#------------------------------------------- |
#------------------------------------------- |
sub select_form { |
sub select_form { |
my ($def,$name,%hash) = @_; |
my ($def,$name,$hashref,$onchange) = @_; |
my $selectform = "<select name=\"$name\" size=\"1\">\n"; |
return unless (ref($hashref) eq 'HASH'); |
|
if ($onchange) { |
|
$onchange = ' onchange="'.$onchange.'"'; |
|
} |
|
my $selectform = "<select name=\"$name\" size=\"1\"$onchange>\n"; |
my @keys; |
my @keys; |
if (exists($hash{'select_form_order'})) { |
if (exists($hashref->{'select_form_order'})) { |
@keys=@{$hash{'select_form_order'}}; |
@keys=@{$hashref->{'select_form_order'}}; |
} else { |
} else { |
@keys=sort(keys(%hash)); |
@keys=sort(keys(%{$hashref})); |
} |
} |
foreach my $key (@keys) { |
foreach my $key (@keys) { |
$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"; |
">".$hashref->{$key}."</option>\n"; |
} |
} |
$selectform.="</select>"; |
$selectform.="</select>"; |
return $selectform; |
return $selectform; |
Line 1699 sub display_filter {
|
Line 1902 sub display_filter {
|
&mt('Filter [_1]', |
&mt('Filter [_1]', |
&select_form($env{'form.displayfilter'}, |
&select_form($env{'form.displayfilter'}, |
'displayfilter', |
'displayfilter', |
('currentfolder' => 'Current folder/page', |
{'currentfolder' => 'Current folder/page', |
'containing' => 'Containing phrase', |
'containing' => 'Containing phrase', |
'none' => 'None'))). |
'none' => 'None'})). |
'<input type="text" name="containingphrase" size="30" value="'.&HTML::Entities::encode($env{'form.containingphrase'}).'" /></span>'; |
'<input type="text" name="containingphrase" size="30" value="'.&HTML::Entities::encode($env{'form.containingphrase'}).'" /></span>'; |
} |
} |
|
|
Line 1746 sub select_level_form {
|
Line 1949 sub select_level_form {
|
|
|
=pod |
=pod |
|
|
=item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc) |
=item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoms) |
|
|
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 1755 See loncreateuser.pm for an example invo
|
Line 1958 See loncreateuser.pm for an example invo
|
If the $includeempty flag is set, it also includes an empty choice ("no domain |
If the $includeempty flag is set, it also includes an empty choice ("no domain |
selected"); |
selected"); |
|
|
If the $showdomdesc flag is set, the domain name is followed by the domain description. |
If the $showdomdesc flag is set, the domain name is followed by the domain description. |
|
|
|
The optional $onchange argument specifies what should occur if the domain selector is changed, e.g., 'this.form.submit()' if the form is to be automatically submitted. |
|
|
|
The optional $incdoms is a reference to an array of domains which will be the only available options. |
|
|
=cut |
=cut |
|
|
#------------------------------------------- |
#------------------------------------------- |
sub select_dom_form { |
sub select_dom_form { |
my ($defdom,$name,$includeempty,$showdomdesc) = @_; |
my ($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoms) = @_; |
my @domains = sort {lc($a) cmp lc($b)} (&Apache::lonnet::all_domains()); |
if ($onchange) { |
|
$onchange = ' onchange="'.$onchange.'"'; |
|
} |
|
my @domains; |
|
if (ref($incdoms) eq 'ARRAY') { |
|
@domains = sort {lc($a) cmp lc($b)} (@{$incdoms}); |
|
} else { |
|
@domains = sort {lc($a) cmp lc($b)} (&Apache::lonnet::all_domains()); |
|
} |
if ($includeempty) { @domains=('',@domains); } |
if ($includeempty) { @domains=('',@domains); } |
my $selectdomain = "<select name=\"$name\" size=\"1\">\n"; |
my $selectdomain = "<select name=\"$name\" size=\"1\"$onchange>\n"; |
foreach my $dom (@domains) { |
foreach my $dom (@domains) { |
$selectdomain.="<option value=\"$dom\" ". |
$selectdomain.="<option value=\"$dom\" ". |
($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom; |
($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom; |
Line 1820 sub home_server_form_item {
|
Line 2035 sub home_server_form_item {
|
if ($numlib > 1) { |
if ($numlib > 1) { |
$result .= '<select name="'.$name.'" />'."\n"; |
$result .= '<select name="'.$name.'" />'."\n"; |
if ($default) { |
if ($default) { |
$result .= '<option value="default" selected>'.&mt('default'). |
$result .= '<option value="default" selected="selected">'.&mt('default'). |
'</option>'."\n"; |
'</option>'."\n"; |
} |
} |
foreach my $hostid (sort(keys(%servers))) { |
foreach my $hostid (sort(keys(%servers))) { |
Line 2115 sub authform_kerberos {
|
Line 2330 sub authform_kerberos {
|
$autharg,$jscall); |
$autharg,$jscall); |
my ($authnum,%can_assign) = &get_assignable_auth($in{'domain'}); |
my ($authnum,%can_assign) = &get_assignable_auth($in{'domain'}); |
if ($in{'kerb_def_auth'} eq 'krb5') { |
if ($in{'kerb_def_auth'} eq 'krb5') { |
$check5 = ' checked="on"'; |
$check5 = ' checked="checked"'; |
} else { |
} else { |
$check4 = ' checked="on"'; |
$check4 = ' checked="checked"'; |
} |
} |
$krbarg = $in{'kerb_def_dom'}; |
$krbarg = $in{'kerb_def_dom'}; |
if (defined($in{'curr_authtype'})) { |
if (defined($in{'curr_authtype'})) { |
if ($in{'curr_authtype'} eq 'krb') { |
if ($in{'curr_authtype'} eq 'krb') { |
$krbcheck = ' checked="on"'; |
$krbcheck = ' checked="checked"'; |
if (defined($in{'mode'})) { |
if (defined($in{'mode'})) { |
if ($in{'mode'} eq 'modifyuser') { |
if ($in{'mode'} eq 'modifyuser') { |
$krbcheck = ''; |
$krbcheck = ''; |
Line 2130 sub authform_kerberos {
|
Line 2345 sub authform_kerberos {
|
} |
} |
if (defined($in{'curr_kerb_ver'})) { |
if (defined($in{'curr_kerb_ver'})) { |
if ($in{'curr_krb_ver'} eq '5') { |
if ($in{'curr_krb_ver'} eq '5') { |
$check5 = ' checked="on"'; |
$check5 = ' checked="checked"'; |
$check4 = ''; |
$check4 = ''; |
} else { |
} else { |
$check4 = ' checked="on"'; |
$check4 = ' checked="checked"'; |
$check5 = ''; |
$check5 = ''; |
} |
} |
} |
} |
Line 2154 sub authform_kerberos {
|
Line 2369 sub authform_kerberos {
|
} |
} |
} else { |
} else { |
if ($authnum == 1) { |
if ($authnum == 1) { |
$authtype = '<input type="hidden" name="login" value="krb">'; |
$authtype = '<input type="hidden" name="login" value="krb" />'; |
} |
} |
} |
} |
if (!$can_assign{'krb4'} && !$can_assign{'krb5'}) { |
if (!$can_assign{'krb4'} && !$can_assign{'krb5'}) { |
Line 2163 sub authform_kerberos {
|
Line 2378 sub authform_kerberos {
|
if (defined($in{'mode'})) { |
if (defined($in{'mode'})) { |
if ($in{'mode'} eq 'modifycourse') { |
if ($in{'mode'} eq 'modifycourse') { |
if ($authnum == 1) { |
if ($authnum == 1) { |
$authtype = '<input type="hidden" name="login" value="krb">'; |
$authtype = '<input type="hidden" name="login" value="krb" />'; |
} |
} |
} |
} |
} |
} |
Line 2224 sub authform_internal{
|
Line 2439 sub authform_internal{
|
if (defined($in{'curr_authtype'})) { |
if (defined($in{'curr_authtype'})) { |
if ($in{'curr_authtype'} eq 'int') { |
if ($in{'curr_authtype'} eq 'int') { |
if ($can_assign{'int'}) { |
if ($can_assign{'int'}) { |
$intcheck = 'checked="on" '; |
$intcheck = 'checked="checked" '; |
if (defined($in{'mode'})) { |
if (defined($in{'mode'})) { |
if ($in{'mode'} eq 'modifyuser') { |
if ($in{'mode'} eq 'modifyuser') { |
$intcheck = ''; |
$intcheck = ''; |
Line 2240 sub authform_internal{
|
Line 2455 sub authform_internal{
|
} |
} |
} else { |
} else { |
if ($authnum == 1) { |
if ($authnum == 1) { |
$authtype = '<input type="hidden" name="login" value="int">'; |
$authtype = '<input type="hidden" name="login" value="int" />'; |
} |
} |
} |
} |
if (!$can_assign{'int'}) { |
if (!$can_assign{'int'}) { |
Line 2249 sub authform_internal{
|
Line 2464 sub authform_internal{
|
if (defined($in{'mode'})) { |
if (defined($in{'mode'})) { |
if ($in{'mode'} eq 'modifycourse') { |
if ($in{'mode'} eq 'modifycourse') { |
if ($authnum == 1) { |
if ($authnum == 1) { |
$authtype = '<input type="hidden" name="login" value="int">'; |
$authtype = '<input type="hidden" name="login" value="int" />'; |
} |
} |
} |
} |
} |
} |
Line 2264 sub authform_internal{
|
Line 2479 sub authform_internal{
|
$result = &mt |
$result = &mt |
('[_1] Internally authenticated (with initial password [_2])', |
('[_1] Internally authenticated (with initial password [_2])', |
'<label>'.$authtype,'</label>'.$autharg); |
'<label>'.$authtype,'</label>'.$autharg); |
$result.="<label><input type=\"checkbox\" name=\"visible\" onClick='if (this.checked) { this.form.intarg.type=\"text\" } else { this.form.intarg.type=\"password\" }' />".&mt('Visible input').'</label>'; |
$result.="<label><input type=\"checkbox\" name=\"visible\" onclick='if (this.checked) { this.form.intarg.type=\"text\" } else { this.form.intarg.type=\"password\" }' />".&mt('Visible input').'</label>'; |
return $result; |
return $result; |
} |
} |
|
|
Line 2279 sub authform_local{
|
Line 2494 sub authform_local{
|
if (defined($in{'curr_authtype'})) { |
if (defined($in{'curr_authtype'})) { |
if ($in{'curr_authtype'} eq 'loc') { |
if ($in{'curr_authtype'} eq 'loc') { |
if ($can_assign{'loc'}) { |
if ($can_assign{'loc'}) { |
$loccheck = 'checked="on" '; |
$loccheck = 'checked="checked" '; |
if (defined($in{'mode'})) { |
if (defined($in{'mode'})) { |
if ($in{'mode'} eq 'modifyuser') { |
if ($in{'mode'} eq 'modifyuser') { |
$loccheck = ''; |
$loccheck = ''; |
Line 2295 sub authform_local{
|
Line 2510 sub authform_local{
|
} |
} |
} else { |
} else { |
if ($authnum == 1) { |
if ($authnum == 1) { |
$authtype = '<input type="hidden" name="login" value="loc">'; |
$authtype = '<input type="hidden" name="login" value="loc" />'; |
} |
} |
} |
} |
if (!$can_assign{'loc'}) { |
if (!$can_assign{'loc'}) { |
Line 2304 sub authform_local{
|
Line 2519 sub authform_local{
|
if (defined($in{'mode'})) { |
if (defined($in{'mode'})) { |
if ($in{'mode'} eq 'modifycourse') { |
if ($in{'mode'} eq 'modifycourse') { |
if ($authnum == 1) { |
if ($authnum == 1) { |
$authtype = '<input type="hidden" name="login" value="loc">'; |
$authtype = '<input type="hidden" name="login" value="loc" />'; |
} |
} |
} |
} |
} |
} |
Line 2333 sub authform_filesystem{
|
Line 2548 sub authform_filesystem{
|
if (defined($in{'curr_authtype'})) { |
if (defined($in{'curr_authtype'})) { |
if ($in{'curr_authtype'} eq 'fsys') { |
if ($in{'curr_authtype'} eq 'fsys') { |
if ($can_assign{'fsys'}) { |
if ($can_assign{'fsys'}) { |
$fsyscheck = 'checked="on" '; |
$fsyscheck = 'checked="checked" '; |
if (defined($in{'mode'})) { |
if (defined($in{'mode'})) { |
if ($in{'mode'} eq 'modifyuser') { |
if ($in{'mode'} eq 'modifyuser') { |
$fsyscheck = ''; |
$fsyscheck = ''; |
Line 2346 sub authform_filesystem{
|
Line 2561 sub authform_filesystem{
|
} |
} |
} else { |
} else { |
if ($authnum == 1) { |
if ($authnum == 1) { |
$authtype = '<input type="hidden" name="login" value="fsys">'; |
$authtype = '<input type="hidden" name="login" value="fsys" />'; |
} |
} |
} |
} |
if (!$can_assign{'fsys'}) { |
if (!$can_assign{'fsys'}) { |
Line 2355 sub authform_filesystem{
|
Line 2570 sub authform_filesystem{
|
if (defined($in{'mode'})) { |
if (defined($in{'mode'})) { |
if ($in{'mode'} eq 'modifycourse') { |
if ($in{'mode'} eq 'modifycourse') { |
if ($authnum == 1) { |
if ($authnum == 1) { |
$authtype = '<input type="hidden" name="login" value="fsys">'; |
$authtype = '<input type="hidden" name="login" value="fsys" />'; |
} |
} |
} |
} |
} |
} |
Line 2779 sub screenname {
|
Line 2994 sub screenname {
|
} |
} |
|
|
|
|
|
# ------------------------------------------------------------- Confirm Wrapper |
|
=pod |
|
|
|
=item confirmwrapper |
|
|
|
Wrap messages about completion of operation in box |
|
|
|
=cut |
|
|
|
sub confirmwrapper { |
|
my ($message)=@_; |
|
if ($message) { |
|
return "\n".'<div class="LC_confirm_box">'."\n" |
|
.$message."\n" |
|
.'</div>'."\n"; |
|
} else { |
|
return $message; |
|
} |
|
} |
|
|
# ------------------------------------------------------------- Message Wrapper |
# ------------------------------------------------------------- Message Wrapper |
|
|
sub messagewrapper { |
sub messagewrapper { |
Line 2789 sub messagewrapper {
|
Line 3024 sub messagewrapper {
|
'&subject='.&escape($subject).'&text='.&escape($text).'" '. |
'&subject='.&escape($subject).'&text='.&escape($text).'" '. |
'title="'.&mt('Send message').'">'.$link.'</a>'; |
'title="'.&mt('Send message').'">'.$link.'</a>'; |
} |
} |
|
|
# --------------------------------------------------------------- Notes Wrapper |
# --------------------------------------------------------------- Notes Wrapper |
|
|
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&recname=$un&recdom=$do'>$link</a>"; |
} |
} |
|
|
# ------------------------------------------------------------- Aboutme Wrapper |
# ------------------------------------------------------------- Aboutme Wrapper |
|
|
sub aboutmewrapper { |
sub aboutmewrapper { |
Line 2803 sub aboutmewrapper {
|
Line 3040 sub aboutmewrapper {
|
if (!defined($username) && !defined($domain)) { |
if (!defined($username) && !defined($domain)) { |
return; |
return; |
} |
} |
return '<a href="/adm/'.$domain.'/'.$username.'/aboutme"'. |
return '<a href="/adm/'.$domain.'/'.$username.'/aboutme?forcestudent=1"'. |
($target?' target="$target"':'').' title="'.&mt("View this user's personal page").'">'.$link.'</a>'; |
($target?' target="$target"':'').' title="'.&mt("View this user's personal information page").'">'.$link.'</a>'; |
} |
} |
|
|
# ------------------------------------------------------------ Syllabus Wrapper |
# ------------------------------------------------------------ Syllabus Wrapper |
|
|
|
|
sub syllabuswrapper { |
sub syllabuswrapper { |
my ($linktext,$coursedir,$domain)=@_; |
my ($linktext,$coursedir,$domain)=@_; |
return qq{<a href="/public/$domain/$coursedir/syllabus">$linktext</a>}; |
return qq{<a href="/public/$domain/$coursedir/syllabus">$linktext</a>}; |
} |
} |
|
|
|
# ----------------------------------------------------------------------------- |
|
|
sub track_student_link { |
sub track_student_link { |
my ($linktext,$sname,$sdom,$target,$start) = @_; |
my ($linktext,$sname,$sdom,$target,$start,$only_body) = @_; |
my $link ="/adm/trackstudent?"; |
my $link ="/adm/trackstudent?"; |
my $title = 'View recent activity'; |
my $title = 'View recent activity'; |
if (defined($sname) && $sname !~ /^\s*$/ && |
if (defined($sname) && $sname !~ /^\s*$/ && |
Line 2830 sub track_student_link {
|
Line 3068 sub track_student_link {
|
$target = ''; |
$target = ''; |
} |
} |
if ($start) { $link.='&start='.$start; } |
if ($start) { $link.='&start='.$start; } |
|
if ($only_body) { $link .= '&only_body=1'; } |
$title = &mt($title); |
$title = &mt($title); |
$linktext = &mt($linktext); |
$linktext = &mt($linktext); |
return qq{<a href="$link" title="$title" $target>$linktext</a>}. |
return qq{<a href="$link" title="$title" $target>$linktext</a>}. |
&help_open_topic('View_recent_activity'); |
&help_open_topic('View_recent_activity'); |
} |
} |
|
|
|
sub slot_reservations_link { |
|
my ($linktext,$sname,$sdom,$target) = @_; |
|
my $link ="/adm/slotrequest?command=showresv&origin=aboutme"; |
|
my $title = 'View slot reservation history'; |
|
if (defined($sname) && $sname !~ /^\s*$/ && |
|
defined($sdom) && $sdom !~ /^\s*$/) { |
|
$link .= "&uname=$sname&udom=$sdom"; |
|
$title .= ' of this student'; |
|
} |
|
if (defined($target) && $target !~ /^\s*$/) { |
|
$target = qq{target="$target"}; |
|
} else { |
|
$target = ''; |
|
} |
|
$title = &mt($title); |
|
$linktext = &mt($linktext); |
|
return qq{<a href="$link" title="$title" $target>$linktext</a>}; |
|
# FIXME uncomment when help item created: &help_open_topic('Slot_Reservation_History'); |
|
|
|
} |
|
|
# ===================================================== Display a student photo |
# ===================================================== Display a student photo |
|
|
|
|
Line 2986 sub filemimetype {
|
Line 3246 sub filemimetype {
|
sub filecategoryselect { |
sub filecategoryselect { |
my ($name,$value)=@_; |
my ($name,$value)=@_; |
return &select_form($value,$name, |
return &select_form($value,$name, |
'' => &mt('Any category'), |
{'' => &mt('Any category'), map { $_,$_ } sort(keys(%category_extensions))}); |
map { $_,$_ } sort(keys(%category_extensions))); |
|
} |
} |
|
|
=pod |
=pod |
Line 3073 sub languages {
|
Line 3332 sub languages {
|
return $preferred_possibilities[0]; |
return $preferred_possibilities[0]; |
} |
} |
|
|
|
sub user_lang { |
|
my ($touname,$toudom,$fromcid) = @_; |
|
my @userlangs; |
|
if (($fromcid ne '') && ($env{'course.'.$fromcid.'.languages'} ne '')) { |
|
@userlangs=(@userlangs,split(/\s*(\,|\;|\:)\s*/, |
|
$env{'course.'.$fromcid.'.languages'})); |
|
} else { |
|
my %langhash = &getlangs($touname,$toudom); |
|
if ($langhash{'languages'} ne '') { |
|
@userlangs = split(/\s*(\,|\;|\:)\s*/,$langhash{'languages'}); |
|
} else { |
|
my %domdefs = &Apache::lonnet::get_domain_defaults($toudom); |
|
if ($domdefs{'lang_def'} ne '') { |
|
@userlangs = ($domdefs{'lang_def'}); |
|
} |
|
} |
|
} |
|
my @languages=&Apache::lonlocal::get_genlanguages(@userlangs); |
|
my $user_lh = Apache::localize->get_handle(@languages); |
|
return $user_lh; |
|
} |
|
|
|
|
############################################################### |
############################################################### |
## Student Answer Attempts ## |
## Student Answer Attempts ## |
############################################################### |
############################################################### |
Line 3129 sub get_previous_attempt {
|
Line 3411 sub get_previous_attempt {
|
} |
} |
$prevattempts=&start_data_table().&start_data_table_header_row(); |
$prevattempts=&start_data_table().&start_data_table_header_row(); |
$prevattempts.='<th>'.&mt('History').'</th>'; |
$prevattempts.='<th>'.&mt('History').'</th>'; |
|
my (%typeparts,%lasthidden); |
|
my $showsurv=&Apache::lonnet::allowed('vas',$env{'request.course.id'}); |
foreach my $key (sort(keys(%lasthash))) { |
foreach my $key (sort(keys(%lasthash))) { |
my ($ign,@parts) = split(/\./,$key); |
my ($ign,@parts) = split(/\./,$key); |
if ($#parts > 0) { |
if ($#parts > 0) { |
my $data=$parts[-1]; |
my $data=$parts[-1]; |
pop(@parts); |
pop(@parts); |
$prevattempts.='<th>'.&mt('Part ').join('.',@parts).'<br />'.$data.' </th>'; |
if ($data eq 'type') { |
|
unless ($showsurv) { |
|
my $id = join(',',@parts); |
|
$typeparts{$ign.'.'.$id} = $lasthash{$key}; |
|
if (($lasthash{$key} eq 'anonsurvey') || ($lasthash{$key} eq 'anonsurveycred')) { |
|
$lasthidden{$ign.'.'.$id} = 1; |
|
} |
|
} |
|
delete($lasthash{$key}); |
|
} else { |
|
$prevattempts.='<th>'.&mt('Part ').join('.',@parts).'<br />'.$data.' </th>'; |
|
} |
} else { |
} else { |
if ($#parts == 0) { |
if ($#parts == 0) { |
$prevattempts.='<th>'.$parts[0].'</th>'; |
$prevattempts.='<th>'.$parts[0].'</th>'; |
Line 3146 sub get_previous_attempt {
|
Line 3441 sub get_previous_attempt {
|
$prevattempts.=&end_data_table_header_row(); |
$prevattempts.=&end_data_table_header_row(); |
if ($getattempt eq '') { |
if ($getattempt eq '') { |
for ($version=1;$version<=$returnhash{'version'};$version++) { |
for ($version=1;$version<=$returnhash{'version'};$version++) { |
$prevattempts.=&start_data_table_row(). |
my @hidden; |
'<td>'.&mt('Transaction [_1]',$version).'</td>'; |
if (%typeparts) { |
foreach my $key (sort(keys(%lasthash))) { |
foreach my $id (keys(%typeparts)) { |
my $value = &format_previous_attempt_value($key, |
if (($returnhash{$version.':'.$id.'.type'} eq 'anonsurvey') || ($returnhash{$version.':'.$id.'.type'} eq 'anonsurveycred')) { |
$returnhash{$version.':'.$key}); |
push(@hidden,$id); |
$prevattempts.='<td>'.$value.' </td>'; |
} |
} |
} |
$prevattempts.=&end_data_table_row(); |
} |
|
$prevattempts.=&start_data_table_row(). |
|
'<td>'.&mt('Transaction [_1]',$version).'</td>'; |
|
if (@hidden) { |
|
foreach my $key (sort(keys(%lasthash))) { |
|
my $hide; |
|
foreach my $id (@hidden) { |
|
if ($key =~ /^\Q$id\E/) { |
|
$hide = 1; |
|
last; |
|
} |
|
} |
|
if ($hide) { |
|
my ($id,$data) = ($key =~ /^(.+)\.([^.]+)$/); |
|
if (($data eq 'award') || ($data eq 'awarddetail')) { |
|
my $value = &format_previous_attempt_value($key, |
|
$returnhash{$version.':'.$key}); |
|
$prevattempts.='<td>'.$value.' </td>'; |
|
} else { |
|
$prevattempts.='<td> </td>'; |
|
} |
|
} else { |
|
if ($key =~ /\./) { |
|
my $value = &format_previous_attempt_value($key, |
|
$returnhash{$version.':'.$key}); |
|
$prevattempts.='<td>'.$value.' </td>'; |
|
} else { |
|
$prevattempts.='<td> </td>'; |
|
} |
|
} |
|
} |
|
} else { |
|
foreach my $key (sort(keys(%lasthash))) { |
|
my $value = &format_previous_attempt_value($key, |
|
$returnhash{$version.':'.$key}); |
|
$prevattempts.='<td>'.$value.' </td>'; |
|
} |
|
} |
|
$prevattempts.=&end_data_table_row(); |
} |
} |
} |
} |
|
my @currhidden = keys(%lasthidden); |
$prevattempts.=&start_data_table_row().'<td>'.&mt('Current').'</td>'; |
$prevattempts.=&start_data_table_row().'<td>'.&mt('Current').'</td>'; |
foreach my $key (sort(keys(%lasthash))) { |
foreach my $key (sort(keys(%lasthash))) { |
my $value = &format_previous_attempt_value($key,$lasthash{$key}); |
if (%typeparts) { |
if ($key =~/$regexp$/ && (defined &$gradesub)) {$value = &$gradesub($value)} |
my $hidden; |
$prevattempts.='<td>'.$value.' </td>'; |
foreach my $id (@currhidden) { |
|
if ($key =~ /^\Q$id\E/) { |
|
$hidden = 1; |
|
last; |
|
} |
|
} |
|
if ($hidden) { |
|
my ($id,$data) = ($key =~ /^(.+)\.([^.]+)$/); |
|
if (($data eq 'award') || ($data eq 'awarddetail')) { |
|
my $value = &format_previous_attempt_value($key,$lasthash{$key}); |
|
if ($key =~/$regexp$/ && (defined &$gradesub)) { |
|
$value = &$gradesub($value); |
|
} |
|
$prevattempts.='<td>'.$value.' </td>'; |
|
} else { |
|
$prevattempts.='<td> </td>'; |
|
} |
|
} else { |
|
my $value = &format_previous_attempt_value($key,$lasthash{$key}); |
|
if ($key =~/$regexp$/ && (defined &$gradesub)) { |
|
$value = &$gradesub($value); |
|
} |
|
$prevattempts.='<td>'.$value.' </td>'; |
|
} |
|
} else { |
|
my $value = &format_previous_attempt_value($key,$lasthash{$key}); |
|
if ($key =~/$regexp$/ && (defined &$gradesub)) { |
|
$value = &$gradesub($value); |
|
} |
|
$prevattempts.='<td>'.$value.' </td>'; |
|
} |
} |
} |
$prevattempts.= &end_data_table_row().&end_data_table(); |
$prevattempts.= &end_data_table_row().&end_data_table(); |
} else { |
} else { |
Line 3333 sub submlink {
|
Line 3697 sub submlink {
|
} |
} |
if (!$symb) { $symb=&Apache::lonnet::symbread(); } |
if (!$symb) { $symb=&Apache::lonnet::symbread(); } |
$symb=&escape($symb); |
$symb=&escape($symb); |
if ($target) { $target="target=\"$target\""; } |
if ($target) { $target=" target=\"$target\""; } |
return '<a href="/adm/grades?&command=submission&'. |
return |
'symb='.$symb.'&student='.$uname. |
'<a href="/adm/grades?command=submission'. |
'&userdom='.$udom.'" '.$target.'>'.$text.'</a>'; |
'&symb='.$symb. |
|
'&student='.$uname. |
|
'&userdom='.$udom.'"'. |
|
$target.'>'.$text.'</a>'; |
} |
} |
############################################## |
############################################## |
|
|
Line 3462 sub findallcourses {
|
Line 3829 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 3652 sub blockcheck {
|
Line 4020 sub blockcheck {
|
($env{'request.role'} !~ m{^st\./\Q$cdom\E/\Q$cnum\E})); |
($env{'request.role'} !~ m{^st\./\Q$cdom\E/\Q$cnum\E})); |
next if ($no_userblock); |
next if ($no_userblock); |
|
|
# Retrieve blocking times and identity of blocker for course |
# Retrieve blocking times and identity of locker for course |
# of specified user, unless user has 'evb' privilege. |
# of specified user, unless user has 'evb' privilege. |
|
|
my ($start,$end)=&get_blocks($setters,$activity,$cdom,$cnum); |
my ($start,$end)=&get_blocks($setters,$activity,$cdom,$cnum); |
Line 3717 sub parse_block_record {
|
Line 4085 sub parse_block_record {
|
return ($setuname,$setudom,$title,$blocks); |
return ($setuname,$setudom,$title,$blocks); |
} |
} |
|
|
sub build_block_table { |
|
my ($startblock,$endblock,$setters) = @_; |
|
my %lt = &Apache::lonlocal::texthash( |
|
'cacb' => 'Currently active communication blocks', |
|
'cour' => 'Course', |
|
'dura' => 'Duration', |
|
'blse' => 'Block set by' |
|
); |
|
my $output; |
|
$output = '<br />'.$lt{'cacb'}.':<br />'; |
|
$output .= &start_data_table(); |
|
$output .= ' |
|
<tr> |
|
<th>'.$lt{'cour'}.'</th> |
|
<th>'.$lt{'dura'}.'</th> |
|
<th>'.$lt{'blse'}.'</th> |
|
</tr> |
|
'; |
|
foreach my $course (keys(%{$setters})) { |
|
my %courseinfo=&Apache::lonnet::coursedescription($course); |
|
for (my $i=0; $i<@{$$setters{$course}{staff}}; $i++) { |
|
my ($uname,$udom) = @{$$setters{$course}{staff}[$i]}; |
|
my $fullname = &plainname($uname,$udom); |
|
if (defined($env{'user.name'}) && defined($env{'user.domain'}) |
|
&& $env{'user.name'} ne 'public' |
|
&& $env{'user.domain'} ne 'public') { |
|
$fullname = &aboutmewrapper($fullname,$uname,$udom); |
|
} |
|
my ($openblock,$closeblock) = @{$$setters{$course}{times}[$i]}; |
|
$openblock = &Apache::lonlocal::locallocaltime($openblock); |
|
$closeblock= &Apache::lonlocal::locallocaltime($closeblock); |
|
$output .= &Apache::loncommon::start_data_table_row(). |
|
'<td>'.$courseinfo{'description'}.'</td>'. |
|
'<td>'.$openblock.' to '.$closeblock.'</td>'. |
|
'<td>'.$fullname.'</td>'. |
|
&Apache::loncommon::end_data_table_row(); |
|
} |
|
} |
|
$output .= &end_data_table(); |
|
} |
|
|
|
sub blocking_status { |
sub blocking_status { |
my ($activity,$uname,$udom) = @_; |
my ($activity,$uname,$udom) = @_; |
my %setters; |
my %setters; |
my ($blocked,$output,$ownitem,$is_course); |
|
my ($startblock,$endblock)=&blockcheck(\%setters,$activity,$uname,$udom); |
# check for active blocking |
if ($startblock && $endblock) { |
my ($startblock,$endblock)=&blockcheck(\%setters,$activity,$uname,$udom); |
$blocked = 1; |
|
if (wantarray) { |
my $blocked = $startblock && $endblock ? 1 : 0; |
my $category; |
|
if ($activity eq 'boards') { |
# caller just wants to know whether a block is active |
$category = 'Discussion posts in this course'; |
if (!wantarray) { return $blocked; } |
} elsif ($activity eq 'blogs') { |
|
$category = 'Blogs'; |
# build a link to a popup window containing the details |
} elsif ($activity eq 'port') { |
my $querystring = "?activity=$activity"; |
if (defined($uname) && defined($udom)) { |
# $uname and $udom decide whose portfolio the user is trying to look at |
if ($uname eq $env{'user.name'} && |
$querystring .= "&udom=$udom" if $udom; |
$udom eq $env{'user.domain'}) { |
$querystring .= "&uname=$uname" if $uname; |
$ownitem = 1; |
|
} |
my $output .= <<'END_MYBLOCK'; |
} |
function openWindow(url, wdwName, w, h, toolbar,scrollbar) { |
$is_course = &Apache::lonnet::is_course($udom,$uname); |
var options = "width=" + w + ",height=" + h + ","; |
if ($ownitem) { |
options += "resizable=yes,scrollbars="+scrollbar+",status=no,"; |
$category = 'Your portfolio files'; |
options += "menubar=no,toolbar="+toolbar+",location=no,directories=no"; |
} elsif ($is_course) { |
var newWin = window.open(url, wdwName, options); |
my $coursedesc; |
newWin.focus(); |
foreach my $course (keys(%setters)) { |
} |
my %courseinfo = |
END_MYBLOCK |
&Apache::lonnet::coursedescription($course); |
|
$coursedesc = $courseinfo{'description'}; |
$output = Apache::lonhtmlcommon::scripttag($output); |
} |
|
$category = "Group files in the course '$coursedesc'"; |
my $popupUrl = "/adm/blockingstatus/$querystring"; |
} else { |
my $text = mt('Communication Blocked'); |
$category = 'Portfolio files belonging to '; |
|
if ($env{'user.name'} eq 'public' && |
$output .= <<"END_BLOCK"; |
$env{'user.domain'} eq 'public') { |
<div class='LC_comblock'> |
$category .= &plainname($uname,$udom); |
<a onclick='openWindow("$popupUrl","Blocking Table",600,300,"no","no");return false;' href='/adm/blockingstatus/$querystring' |
} else { |
title='$text'> |
$category .= &aboutmewrapper(&plainname($uname,$udom),$uname,$udom); |
<img class='LC_noBorder LC_middle' title='$text' src='/res/adm/pages/comblock.png' alt='$text'/></a> |
} |
<a onclick='openWindow("$popupUrl","Blocking Table",600,300,"no","no");return false;' href='/adm/blockingstatus/$querystring' |
} |
title='$text'>$text</a> |
} elsif ($activity eq 'groups') { |
</div> |
$category = 'Groups in this course'; |
|
} |
END_BLOCK |
my $showstart = &Apache::lonlocal::locallocaltime($startblock); |
|
my $showend = &Apache::lonlocal::locallocaltime($endblock); |
return ($blocked, $output); |
$output = '<br />'.&mt('[_1] will be inaccessible between [_2] and [_3] because communication is being blocked.',$category,$showstart,$showend).'<br />'; |
|
if (!($activity eq 'port' && !($ownitem) && !($is_course))) { |
|
$output .= &build_block_table($startblock,$endblock,\%setters); |
|
} |
|
} |
|
} |
|
if (wantarray) { |
|
return ($blocked,$output); |
|
} else { |
|
return $blocked; |
|
} |
|
} |
} |
|
|
############################################### |
############################################### |
Line 3891 sub determinedomain {
|
Line 4207 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 3914 sub get_domainconf {
|
Line 4230 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','autoenroll'],$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 3950 sub get_domainconf {
|
Line 4289 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 4042 Returns: value of designparamter $which
|
Line 4386 Returns: value of designparamter $which
|
############################################## |
############################################## |
sub designparm { |
sub designparm { |
my ($which,$domain)=@_; |
my ($which,$domain)=@_; |
if ($env{'browser.blackwhite'} eq 'on') { |
|
if ($which=~/\.(font|alink|vlink|link|textcol)$/) { |
|
return '#000000'; |
|
} |
|
if ($which=~/\.(pgbg|sidebg|bgcol)$/) { |
|
return '#FFFFFF'; |
|
} |
|
if ($which=~/\.tabbg$/) { |
|
return '#CCCCCC'; |
|
} |
|
} |
|
if (exists($env{'environment.color.'.$which})) { |
if (exists($env{'environment.color.'.$which})) { |
return $env{'environment.color.'.$which}; |
return $env{'environment.color.'.$which}; |
} |
} |
$domain=&determinedomain($domain); |
$domain=&determinedomain($domain); |
my %domdesign = &get_domainconf($domain); |
my %domdesign = &get_domainconf($domain); |
my $output; |
my $output; |
if ($domdesign{$domain.'.'.$which} ne '') { |
if ($domdesign{$domain.'.'.$which} ne '') { |
$output = $domdesign{$domain.'.'.$which}; |
$output = $domdesign{$domain.'.'.$which}; |
} else { |
} else { |
$output = $defaultdesign{$which}; |
$output = $defaultdesign{$which}; |
} |
} |
if (($which =~ /^(student|coordinator|author|admin)\.img$/) || |
if (($which =~ /^(student|coordinator|author|admin)\.img$/) || |
($which =~ /login\.(img|logo|domlogo|login)/)) { |
($which =~ /login\.(img|logo|domlogo|login)/)) { |
if ($output =~ m{^/(adm|res)/}) { |
if ($output =~ m{^/(adm|res)/}) { |
if ($output =~ m{^/res/}) { |
if ($output =~ m{^/res/}) { |
my $local_name = &Apache::lonnet::filelocation('',$output); |
my $local_name = &Apache::lonnet::filelocation('',$output); |
&Apache::lonnet::repcopy($local_name); |
&Apache::lonnet::repcopy($local_name); |
} |
} |
$output = &lonhttpdurl($output); |
$output = &lonhttpdurl($output); |
} |
} |
} |
} |
return $output; |
return $output; |
} |
} |
|
|
|
############################################## |
|
=pod |
|
|
|
=item * &authorspace() |
|
|
|
Inputs: ./. |
|
|
|
Returns: Path to the Construction Space of the current user's |
|
accessed author space |
|
The author space will be that of the current user |
|
when accessing the own author space |
|
and that of the co-author/assistent co-author |
|
when accessing the co-author's/assistent co-author's |
|
space |
|
|
|
=cut |
|
|
|
sub authorspace { |
|
my $caname = ''; |
|
if ($env{'request.role'} =~ /^ca|^aa/) { |
|
(undef,$caname) = |
|
($env{'request.role'}=~/($match_domain)\/($match_username)$/); |
|
} else { |
|
$caname = $env{'user.name'}; |
|
} |
|
return '/priv/'.$caname.'/'; |
|
} |
|
|
|
############################################## |
|
=pod |
|
|
|
=item * &head_subbox() |
|
|
|
Inputs: $content (contains HTML code with page functions, etc.) |
|
|
|
Returns: HTML div with $content |
|
To be included in page header |
|
|
|
=cut |
|
|
|
sub head_subbox { |
|
my ($content)=@_; |
|
my $output = |
|
'<div id="LC_head_subbox">' |
|
.$content |
|
.'</div>' |
|
} |
|
|
|
############################################## |
|
=pod |
|
|
|
=item * &CSTR_pageheader() |
|
|
|
Inputs: ./. |
|
|
|
Returns: HTML div with CSTR path and recent box |
|
To be included on Construction Space pages |
|
|
|
=cut |
|
|
|
sub CSTR_pageheader { |
|
# this is for resources; directories have customtitle, and crumbs |
|
# and select recent are created in lonpubdir.pm |
|
my ($uname,$thisdisfn)= |
|
($env{'request.filename'} =~ m|^/home/([^/]+)/public_html/(.*)|); |
|
my $formaction='/priv/'.$uname.'/'.$thisdisfn; |
|
$formaction=~s/\/+/\//g; |
|
|
|
my $parentpath = ''; |
|
my $lastitem = ''; |
|
if ($thisdisfn =~ m-(.+/)([^/]*)$-) { |
|
$parentpath = $1; |
|
$lastitem = $2; |
|
} else { |
|
$lastitem = $thisdisfn; |
|
} |
|
|
|
my $output = |
|
'<div>' |
|
.&Apache::loncommon::help_open_menu('','',3,'Authoring') #FIXME: Broken? Where is it? |
|
.'<b>'.&mt('Construction Space:').'</b> ' |
|
.'<form name="dirs" method="post" action="'.$formaction |
|
.'" target="_top">' #FIXME lonpubdir: target="_parent" |
|
.&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv',undef,undef); |
|
|
|
if ($lastitem) { |
|
$output .= |
|
'<span class="LC_filename">' |
|
.$lastitem |
|
.'</span>'; |
|
} |
|
$output .= |
|
'<br />' |
|
#FIXME lonpubdir: &Apache::lonhtmlcommon::crumbs($uname.$thisdisfn.'/','_top','/priv','','+1',1)."</b></tt><br />" |
|
.&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()') |
|
.'</form>' |
|
.&Apache::lonmenu::constspaceform() |
|
.'</div>'; |
|
|
|
return $output; |
|
} |
|
|
############################################### |
############################################### |
############################################### |
############################################### |
|
|
Line 4109 Inputs:
|
Line 4544 Inputs:
|
=item * $forcereg, if page should register as content page (relevant for |
=item * $forcereg, if page should register as content page (relevant for |
text interface only) |
text interface only) |
|
|
=item * $customtitle, alternate text to use instead of $title |
=item * $no_nav_bar, if true, keep the 'what is this' info but remove the |
in the title box that appears, this text |
navigational links |
is not auto translated like the $title is |
|
|
|
=item * $notopbar, if true, keep the 'what is this' info but remove the |
|
navigational links |
|
|
|
=item * $bgcolor, used to override the bgcolor on a webpage to a specific value |
=item * $bgcolor, used to override the bgcolor on a webpage to a specific value |
|
|
=item * $notitle, if true keep the nav controls, but remove the title bar |
|
|
|
=item * $no_inline_link, if true and in remote mode, don't show the |
|
'Switch To Inline Menu' link |
|
|
|
=item * $args, optional argument valid values are |
=item * $args, optional argument valid values are |
no_auto_mt_title -> prevents &mt()ing the title arg |
no_auto_mt_title -> prevents &mt()ing the title arg |
inherit_jsmath -> when creating popup window in a page, |
inherit_jsmath -> when creating popup window in a page, |
Line 4139 other decorations will be returned.
|
Line 4565 other decorations will be returned.
|
=cut |
=cut |
|
|
sub bodytag { |
sub bodytag { |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg,$customtitle, |
my ($title,$function,$addentries,$bodyonly,$domain,$forcereg, |
$notopbar,$bgcolor,$notitle,$no_inline_link,$args)=@_; |
$no_nav_bar,$bgcolor,$args)=@_; |
|
|
|
my $public; |
|
if ((($env{'user.name'} eq 'public') && ($env{'user.domain'} eq 'public')) |
|
|| ($env{'user.name'} eq '') && ($env{'user.domain'} eq '')) { |
|
$public = 1; |
|
} |
if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); } |
if (!$args->{'no_auto_mt_title'}) { $title = &mt($title); } |
|
|
$function = &get_users_function() if (!$function); |
$function = &get_users_function() if (!$function); |
Line 4149 sub bodytag {
|
Line 4580 sub bodytag {
|
my $font = &designparm($function.'.font',$domain); |
my $font = &designparm($function.'.font',$domain); |
my $pgbg = $bgcolor || &designparm($function.'.pgbg',$domain); |
my $pgbg = $bgcolor || &designparm($function.'.pgbg',$domain); |
|
|
my %design = ( 'style' => 'margin-top: 0px', |
my %design = ( 'style' => 'margin-top: 0', |
'bgcolor' => $pgbg, |
'bgcolor' => $pgbg, |
'text' => $font, |
'text' => $font, |
'alink' => &designparm($function.'.alink',$domain), |
'alink' => &designparm($function.'.alink',$domain), |
Line 4168 sub bodytag {
|
Line 4599 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 .= (' 'x2).'- '.&mt('section:').' '.$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); |
} |
} |
|
|
if (!$realm) { $realm=' '; } |
if (!$realm) { $realm=' '; } |
# Set messages |
|
my $messages=&domainlogo($domain); |
|
|
|
my $extra_body_attr = &make_attr_string($forcereg,\%design); |
my $extra_body_attr = &make_attr_string($forcereg,\%design); |
|
|
Line 4185 sub bodytag {
|
Line 4617 sub bodytag {
|
|
|
if ($bodyonly) { |
if ($bodyonly) { |
return $bodytag; |
return $bodytag; |
} elsif ($env{'browser.interface'} eq 'textual') { |
} |
# Accessibility |
|
|
|
$bodytag.=&Apache::lonmenu::menubuttons($forcereg,$forcereg); |
|
if (!$notitle) { |
|
$bodytag.='<h1>LON-CAPA: '.$title.'</h1>'; |
|
} |
|
return $bodytag; |
|
} |
|
|
|
my $name = &plainname($env{'user.name'},$env{'user.domain'}); |
my $name = &plainname($env{'user.name'},$env{'user.domain'}); |
if ($env{'user.name'} eq 'public' && $env{'user.domain'} eq 'public') { |
if ($public) { |
undef($role); |
undef($role); |
} else { |
} else { |
$name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); |
$name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}); |
} |
} |
|
|
my $roleinfo=(<<ENDROLE); |
my $titleinfo = '<h1>'.$title.'</h1>'; |
<td class="LC_title_bar_who"> |
|
<div class="LC_title_bar_name"> |
|
$name |
|
|
|
</div> |
|
<div class="LC_title_bar_role"> |
|
$role |
|
</div> |
|
<div class="LC_title_bar_realm"> |
|
$realm |
|
</div> |
|
</td> |
|
ENDROLE |
|
|
|
my $titleinfo = '<span class="LC_title_bar_title">'.$title.'</span>'; |
|
if ($customtitle) { |
|
$titleinfo = $customtitle; |
|
} |
|
# |
# |
# Extra info if you are the DC |
# Extra info if you are the DC |
my $dc_info = ''; |
my $dc_info = ''; |
Line 4228 ENDROLE
|
Line 4634 ENDROLE
|
$env{'course.'.$env{'request.course.id'}. |
$env{'course.'.$env{'request.course.id'}. |
'.domain'}.'/'})) { |
'.domain'}.'/'})) { |
my $cid = $env{'request.course.id'}; |
my $cid = $env{'request.course.id'}; |
$dc_info.= $cid.' '.$env{'course.'.$cid.'.internal.coursecode'}; |
$dc_info = $cid.' '.$env{'course.'.$cid.'.internal.coursecode'}; |
$dc_info =~ s/\s+$//; |
$dc_info =~ s/\s+$//; |
$dc_info = '('.$dc_info.')'; |
|
} |
} |
|
|
if (($env{'environment.remote'} eq 'off') || ($args->{'suppress_header_logos'})) { |
$role = '<span class="LC_nobreak">('.$role.')</span>' if $role; |
# No Remote |
&get_unprocessed_cgi($ENV{'QUERY_STRING'}, ['inhibitmenu']); |
if ($env{'request.state'} eq 'construct') { |
|
$forcereg=1; |
|
} |
|
|
|
if (!$customtitle && $env{'request.state'} eq 'construct') { |
if ($no_nav_bar || $env{'form.inhibitmenu'} eq 'yes') { |
# this is for resources; directories have customtitle, and crumbs |
return $bodytag; |
# and select recent are created in lonpubdir.pm |
} |
my ($uname,$thisdisfn)= |
|
($env{'request.filename'} =~ m|^/home/([^/]+)/public_html/(.*)|); |
if ($env{'request.state'} eq 'construct') { $forcereg=1; } |
my $formaction='/priv/'.$uname.'/'.$thisdisfn; |
|
$formaction=~s/\/+/\//g; |
# if ($env{'request.state'} eq 'construct') { |
|
# $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls |
my $parentpath = ''; |
# } |
my $lastitem = ''; |
|
if ($thisdisfn =~ m-(.+/)([^/]*)$-) { |
|
$parentpath = $1; |
|
$lastitem = $2; |
if ($env{'request.noversionuri'} =~ m{^/res/adm/pages/}) { |
} else { |
if ($dc_info) { |
$lastitem = $thisdisfn; |
$dc_info = qq|<span class="LC_cusr_subheading">$dc_info</span>|; |
} |
} |
$titleinfo = |
$bodytag .= qq|<div id="LC_nav_bar">$name $role<br /> |
&Apache::loncommon::help_open_menu('','',3,'Authoring') |
<em>$realm</em> $dc_info</div>|; |
.'<b>'.&mt('Construction Space').'</b>: ' |
return $bodytag; |
.'<form name="dirs" method="post" action="'.$formaction |
} |
.'" target="_top"><tt><b>' |
|
.&Apache::lonhtmlcommon::crumbs($uname.'/'.$parentpath,'_top','/priv','','+1',1)."<span class=\"LC_fontsize_big\">$lastitem</span></b></tt><br />" |
unless ($env{'request.symb'} =~ m/\.page___\d+___/) { |
.&Apache::lonhtmlcommon::select_recent('construct','recent','this.form.action=this.form.recent.value;this.form.submit()') |
$bodytag .= qq|<div id="LC_nav_bar">$name $role</div>|; |
.'</form>' |
} |
.&Apache::lonmenu::constspaceform(); |
|
} |
$bodytag .= Apache::lonhtmlcommon::scripttag( |
|
Apache::lonmenu::utilityfunctions(), 'start'); |
my $titletable; |
|
if (!$notitle) { |
$bodytag .= Apache::lonmenu::primary_menu(); |
$titletable = |
|
'<table id="LC_title_bar">'. |
if ($dc_info) { |
"<tr><td> $titleinfo $dc_info</td>".$roleinfo. |
$dc_info = &dc_courseid_toggle($dc_info); |
'</tr></table>'; |
} |
} |
$bodytag .= qq|<div id="LC_realm">$realm $dc_info</div>|; |
if ($notopbar) { |
|
$bodytag .= $titletable; |
#don't show menus for public users |
} else { |
if (!$public){ |
if ($env{'request.state'} eq 'construct') { |
$bodytag .= Apache::lonmenu::secondary_menu(); |
$bodytag .= &Apache::lonmenu::menubuttons($forcereg,$forcereg, |
$bodytag .= Apache::lonmenu::serverform(); |
$titletable); |
$bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); |
} else { |
if ($env{'request.state'} eq 'construct') { |
$bodytag .= &Apache::lonmenu::menubuttons($forcereg,$forcereg). |
$bodytag .= &Apache::lonmenu::innerregister($forcereg, |
$titletable; |
$args->{'bread_crumbs'}); |
|
} elsif ($forcereg) { |
|
$bodytag .= &Apache::lonmenu::innerregister($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'); |
} |
} |
return $bodytag; |
|
} |
|
|
|
# |
return $bodytag; |
# Top frame rendering, Remote is up |
} |
# |
|
|
|
my $imgsrc = $img; |
sub dc_courseid_toggle { |
if ($img =~ /^\/adm/) { |
my ($dc_info) = @_; |
$imgsrc = &lonhttpdurl($img); |
return ' <span id="dccidtext" class="LC_cusr_subheading LC_nobreak">'. |
} |
'<a href="javascript:showCourseID();">'. |
my $upperleft='<img src="'.$imgsrc.'" alt="'.$function.'" />'; |
&mt('(More ...)').'</a></span>'. |
|
'<div id="dccid" class="LC_dccid">'.$dc_info.'</div>'; |
# Explicit link to get inline menu |
|
my $menu= ($no_inline_link?'' |
|
:'<br /><a href="/adm/remote?action=collapse">'.&mt('Switch to Inline Menu Mode').'</a>'); |
|
# |
|
if ($notitle) { |
|
return $bodytag; |
|
} |
|
return(<<ENDBODY); |
|
$bodytag |
|
<table id="LC_title_bar" class="LC_with_remote"> |
|
<tr><td class="LC_title_bar_role_logo">$upperleft</td> |
|
<td class="LC_title_bar_domain_logo">$messages </td> |
|
</tr> |
|
<tr><td>$titleinfo $dc_info $menu</td> |
|
$roleinfo |
|
</tr> |
|
</table> |
|
ENDBODY |
|
} |
} |
|
|
sub make_attr_string { |
sub make_attr_string { |
Line 4338 sub make_attr_string {
|
Line 4726 sub make_attr_string {
|
delete($attr_ref->{$key}); |
delete($attr_ref->{$key}); |
} |
} |
} |
} |
$attr_ref->{'onload'} = |
$attr_ref->{'onload'} = $on_load; |
&Apache::lonmenu::loadevents(). $on_load; |
$attr_ref->{'onunload'}= $on_unload; |
$attr_ref->{'onunload'}= |
|
&Apache::lonmenu::unloadevents().$on_unload; |
|
} |
|
|
|
# Accessibility font enhance |
|
if ($env{'browser.fontenhance'} eq 'on') { |
|
my $style; |
|
foreach my $key (keys(%{$attr_ref})) { |
|
if (lc($key) eq 'style') { |
|
$style.=$attr_ref->{$key}.';'; |
|
delete($attr_ref->{$key}); |
|
} |
|
} |
|
$attr_ref->{'style'}=$style.'; font-size: x-large;'; |
|
} |
|
|
|
if ($env{'browser.blackwhite'} eq 'on') { |
|
delete($attr_ref->{'font'}); |
|
delete($attr_ref->{'link'}); |
|
delete($attr_ref->{'alink'}); |
|
delete($attr_ref->{'vlink'}); |
|
delete($attr_ref->{'bgcolor'}); |
|
delete($attr_ref->{'background'}); |
|
} |
} |
|
|
my $attr_string; |
my $attr_string; |
Line 4425 sub standard_css {
|
Line 4790 sub standard_css {
|
my $img = &designparm($function.'.img', $domain); |
my $img = &designparm($function.'.img', $domain); |
my $tabbg = &designparm($function.'.tabbg', $domain); |
my $tabbg = &designparm($function.'.tabbg', $domain); |
my $font = &designparm($function.'.font', $domain); |
my $font = &designparm($function.'.font', $domain); |
|
my $fontmenu = &designparm($function.'.fontmenu', $domain); |
|
#second colour for later usage |
my $sidebg = &designparm($function.'.sidebg',$domain); |
my $sidebg = &designparm($function.'.sidebg',$domain); |
my $pgbg_or_bgcolor = |
my $pgbg_or_bgcolor = |
$bgcolor || |
$bgcolor || |
Line 4434 sub standard_css {
|
Line 4801 sub standard_css {
|
my $vlink = &designparm($function.'.vlink', $domain); |
my $vlink = &designparm($function.'.vlink', $domain); |
my $link = &designparm($function.'.link', $domain); |
my $link = &designparm($function.'.link', $domain); |
|
|
my $loginbg = &designparm('login.sidebg',$domain); |
|
my $bgcol = &designparm('login.bgcol',$domain); |
|
my $textcol = &designparm('login.textcol',$domain); |
|
|
|
my $sans = 'Verdana,Arial,Helvetica,sans-serif'; |
my $sans = 'Verdana,Arial,Helvetica,sans-serif'; |
my $mono = 'monospace'; |
my $mono = 'monospace'; |
my $data_table_head = $tabbg; |
my $data_table_head = $sidebg; |
my $data_table_light = '#EEEEEE'; |
my $data_table_light = '#FAFAFA'; |
my $data_table_dark = '#DDDDDD'; |
my $data_table_dark = '#F0F0F0'; |
my $data_table_darker = '#CCCCCC'; |
my $data_table_darker = '#CCCCCC'; |
my $data_table_highlight = '#FFFF00'; |
my $data_table_highlight = '#FFFF00'; |
my $mail_new = '#FFBB77'; |
my $mail_new = '#FFBB77'; |
Line 4455 sub standard_css {
|
Line 4818 sub standard_css {
|
my $mail_other_hover = '#669999'; |
my $mail_other_hover = '#669999'; |
my $table_header = '#DDDDDD'; |
my $table_header = '#DDDDDD'; |
my $feedback_link_bg = '#BBBBBB'; |
my $feedback_link_bg = '#BBBBBB'; |
my $lg_border_color = '#C8C8C8'; |
my $lg_border_color = '#C8C8C8'; |
|
my $button_hover = '#BF2317'; |
|
|
my $border = ($env{'browser.type'} eq 'explorer' || |
my $border = ($env{'browser.type'} eq 'explorer' || |
$env{'browser.type'} eq 'safari' ) ? '0px 2px 0px 2px' |
$env{'browser.type'} eq 'safari' ) ? '0 2px 0 2px' |
: '0px 3px 0px 4px'; |
: '0 3px 0 4px'; |
|
|
|
|
return <<END; |
return <<END; |
body{ |
|
font-family: $sans; |
|
line-height:130%; |
|
font-size:0.83em; |
|
color:$font; |
|
} |
|
a:link, a:visited { font-size:100%; } |
|
|
|
a:focus { color: red; background: yellow } |
/* needed for iframe to allow 100% height in FF */ |
table.thinborder, |
body, html { |
table.thinborder tr th { |
margin: 0; |
border-style: solid; |
padding: 0 0.5%; |
border-width: 1px; |
height: 99%; /* to avoid scrollbars */ |
border-color: $lg_border_color; |
|
background: $tabbg; |
|
} |
} |
table.thinborder tr td { |
|
border-style: solid; |
body { |
border-width: 1px; |
font-family: $sans; |
border-color: $lg_border_color; |
line-height:130%; |
|
font-size:0.83em; |
|
color:$font; |
} |
} |
|
|
form, .inline { display: inline; } |
a:focus, |
|
a:focus img { |
|
color: red; |
|
background: yellow; |
|
} |
|
|
.LC_center { text-align: center; } |
form, .inline { |
.LC_left { text-align:left; } |
display: inline; |
.LC_right {text-align:right;} |
} |
.LC_middle {vertical-align:middle;} |
|
.LC_top {vertical-align:top;} |
.LC_right { |
.LC_bottom {vertical-align:bottom;} |
text-align:right; |
|
} |
/* just for tests */ |
|
.LC_300Box { width:300px; } |
.LC_middle { |
.LC_200Box {width:200px; } |
vertical-align:middle; |
.LC_500Box {width:500px; } |
} |
.LC_600Box {width:600px; } |
|
/* end */ |
.LC_400Box { |
|
width:400px; |
|
} |
|
|
|
.LC_iframecontainer { |
|
width: 98%; |
|
margin: 0; |
|
position: fixed; |
|
top: 8.5em; |
|
bottom: 0; |
|
} |
|
|
|
.LC_iframecontainer iframe{ |
|
border: none; |
|
width: 100%; |
|
height: 100%; |
|
} |
|
|
|
.LC_filename { |
|
font-family: $mono; |
|
white-space:pre; |
|
font-size: 120%; |
|
} |
|
|
|
.LC_fileicon { |
|
border: none; |
|
height: 1.3em; |
|
vertical-align: text-bottom; |
|
margin-right: 0.3em; |
|
text-decoration:none; |
|
} |
|
|
.LC_filename {font-family: $mono; white-space:pre;} |
|
.LC_error { |
.LC_error { |
color: red; |
color: red; |
font-size: larger; |
font-size: larger; |
} |
} |
|
|
.LC_warning, |
.LC_warning, |
.LC_diff_removed { |
.LC_diff_removed { |
color: red; |
color: red; |
Line 4516 form, .inline { display: inline; }
|
Line 4907 form, .inline { display: inline; }
|
.LC_diff_added { |
.LC_diff_added { |
color: green; |
color: green; |
} |
} |
.LC_unknown { |
|
color: yellow; |
div.LC_confirm_box { |
|
background-color: #FAFAFA; |
|
border: 1px solid $lg_border_color; |
|
margin-right: 0; |
|
padding: 5px; |
} |
} |
|
|
.LC_icon { |
div.LC_confirm_box .LC_error img, |
border: 0px; |
div.LC_confirm_box .LC_success img { |
|
vertical-align: middle; |
} |
} |
.LC_indexer_icon { |
|
border: 0px; |
.LC_icon { |
height: 22px; |
border: none; |
|
vertical-align: middle; |
} |
} |
|
|
.LC_docs_spacer { |
.LC_docs_spacer { |
width: 25px; |
width: 25px; |
height: 1px; |
height: 1px; |
border: 0px; |
border: none; |
} |
} |
|
|
.LC_internal_info { |
.LC_internal_info { |
color: #999999; |
color: #999999; |
} |
} |
|
|
|
.LC_discussion { |
|
background: $tabbg; |
|
border: 1px solid black; |
|
margin: 2px; |
|
} |
|
|
|
.LC_disc_action_links_bar { |
|
background: $tabbg; |
|
border: none; |
|
margin: 4px; |
|
} |
|
|
|
.LC_disc_action_left { |
|
text-align: left; |
|
} |
|
|
|
.LC_disc_action_right { |
|
text-align: right; |
|
} |
|
|
|
.LC_disc_new_item { |
|
background: white; |
|
border: 2px solid red; |
|
margin: 2px; |
|
} |
|
|
|
.LC_disc_old_item { |
|
background: white; |
|
border: 1px solid black; |
|
margin: 2px; |
|
} |
|
|
table.LC_pastsubmission { |
table.LC_pastsubmission { |
border: 1px solid black; |
border: 1px solid black; |
margin: 2px; |
margin: 2px; |
} |
} |
|
|
table#LC_top_nav, table#LC_menubuttons,table#LC_nav_location { |
table#LC_menubuttons { |
width: 100%; |
width: 100%; |
background: $pgbg; |
background: $pgbg; |
border: 2px; |
border: 2px; |
border-collapse: separate; |
border-collapse: separate; |
padding: 0px; |
padding: 0; |
|
} |
|
|
|
table#LC_title_bar a { |
|
color: $fontmenu; |
|
} |
|
|
|
table#LC_title_bar { |
|
clear: both; |
|
display: none; |
} |
} |
|
|
table#LC_title_bar, table.LC_breadcrumbs, |
table#LC_title_bar, |
|
table.LC_breadcrumbs, /* obsolete? */ |
table#LC_title_bar.LC_with_remote { |
table#LC_title_bar.LC_with_remote { |
width: 100%; |
width: 100%; |
border-color: $pgbg; |
border-color: $pgbg; |
border-style: solid; |
border-style: solid; |
border-width: $border; |
border-width: $border; |
|
|
background: $pgbg; |
|
font-family: $sans; |
|
border-collapse: collapse; |
|
padding: 0px; |
|
} |
|
table.LC_docs_path { |
|
width: 100%; |
|
border: 0; |
|
background: $pgbg; |
background: $pgbg; |
font-family: $sans; |
color: $fontmenu; |
border-collapse: collapse; |
border-collapse: collapse; |
padding: 0px; |
padding: 0; |
|
margin: 0; |
} |
} |
|
|
table#LC_title_bar td { |
ul.LC_breadcrumb_tools_outerlist { |
background: $tabbg; |
margin: 0; |
|
padding: 0; |
|
position: relative; |
|
list-style: none; |
} |
} |
table#LC_title_bar td.LC_title_bar_who { |
ul.LC_breadcrumb_tools_outerlist li { |
background: $tabbg; |
display: inline; |
color: $font; |
|
font: small $sans; |
|
text-align: right; |
|
} |
|
span.LC_metadata { |
|
font-family: $sans; |
|
} |
|
span.LC_title_bar_title { |
|
font: bold x-large $sans; |
|
} |
|
table#LC_title_bar td.LC_title_bar_domain_logo { |
|
background: $sidebg; |
|
text-align: right; |
|
padding: 0px; |
|
} |
|
table#LC_title_bar td.LC_title_bar_role_logo { |
|
background: $sidebg; |
|
padding: 0px; |
|
} |
} |
|
|
table#LC_menubuttons img{ |
.LC_breadcrumb_tools_navigation { |
border: 0px; |
padding: 0; |
} |
margin: 0; |
table#LC_top_nav td { |
float: left; |
background: $tabbg; |
|
border: 0px; |
|
font-size: small; |
|
vertical-align:top; |
|
padding:2px 5px 2px 5px; |
|
} |
} |
table#LC_top_nav td a, div#LC_top_nav a { |
.LC_breadcrumb_tools_tools { |
color: $font; |
padding: 0; |
font-family: $sans; |
margin: 0; |
|
float: right; |
} |
} |
table#LC_top_nav td.LC_top_nav_logo { |
|
|
table#LC_title_bar td { |
background: $tabbg; |
background: $tabbg; |
text-align: left; |
|
white-space: nowrap; |
|
width: 31px; |
|
} |
|
table#LC_top_nav td.LC_top_nav_logo img { |
|
border: 0px; |
|
vertical-align: bottom; |
|
} |
|
table#LC_top_nav td.LC_top_nav_exit, |
|
table#LC_top_nav td.LC_top_nav_help { |
|
width: 2.0em; |
|
} |
} |
table#LC_top_nav td.LC_top_nav_login { |
|
width: 4.0em; |
table#LC_menubuttons img { |
text-align: center; |
border: none; |
} |
} |
table.LC_breadcrumbs td, table.LC_docs_path td { |
|
background: $tabbg; |
.LC_breadcrumbs_component { |
color: $font; |
float: right; |
font-family: $sans; |
margin: 0 1em; |
font-size: smaller; |
|
} |
} |
table.LC_breadcrumbs td.LC_breadcrumbs_component, |
.LC_breadcrumbs_component img { |
table.LC_docs_path td.LC_docs_path_component { |
vertical-align: middle; |
background: $tabbg; |
|
color: $font; |
|
font-family: $sans; |
|
font-size: larger; |
|
text-align: right; |
|
} |
} |
|
|
td.LC_table_cell_checkbox { |
td.LC_table_cell_checkbox { |
text-align: center; |
text-align: center; |
} |
} |
table#LC_mainmenu td.LC_mainmenu_column { |
|
vertical-align: top; |
.LC_fontsize_small { |
|
font-size: 70%; |
} |
} |
|
|
.LC_fontsize_small |
#LC_breadcrumbs { |
{ |
clear:both; |
font-size: 70%; |
background: $sidebg; |
|
border-bottom: 1px solid $lg_border_color; |
|
line-height: 2.5em; |
|
overflow: hidden; |
|
margin: 0; |
|
padding: 0; |
} |
} |
|
|
.LC_fontsize_medium |
#LC_head_subbox { |
{ |
clear:both; |
font-size: 85%; |
background: #F8F8F8; /* $sidebg; */ |
|
border: 1px solid $sidebg; |
|
margin: 0 0 10px 0; |
|
padding: 3px; |
} |
} |
|
|
.LC_fontsize_large |
.LC_fontsize_medium { |
{ |
font-size: 85%; |
font-size: 120%; |
|
} |
} |
|
|
.LC_fontcolor_red |
.LC_fontsize_large { |
{ |
font-size: 120%; |
color: #FF0000; |
|
} |
} |
|
|
.LC_menubuttons_inline_text { |
.LC_menubuttons_inline_text { |
color: $font; |
color: $font; |
font-family: $sans; |
|
font-size: 90%; |
font-size: 90%; |
padding-left:3px; |
padding-left:3px; |
} |
} |
|
|
|
.LC_menubuttons_inline_text img{ |
|
vertical-align: middle; |
|
} |
|
|
|
li.LC_menubuttons_inline_text img,a { |
|
cursor:pointer; |
|
} |
|
|
.LC_menubuttons_link { |
.LC_menubuttons_link { |
text-decoration: none; |
text-decoration: none; |
} |
} |
/*2008--9-5: new menu style sheet.Changed category*/ |
|
.LC_menubuttons_category { |
.LC_menubuttons_category { |
color: $font; |
color: $font; |
background: $pgbg; |
background: $pgbg; |
font-family: $sans; |
|
font-size: larger; |
font-size: larger; |
font-weight: bold; |
font-weight: bold; |
} |
} |
|
|
td.LC_menubuttons_text { |
td.LC_menubuttons_text { |
color: $font; |
color: $font; |
} |
} |
|
|
|
|
|
|
.LC_current_location { |
.LC_current_location { |
font-family: $sans; |
|
background: $tabbg; |
|
} |
|
.LC_new_mail { |
|
font-family: $sans; |
|
background: $tabbg; |
background: $tabbg; |
font-weight: bold; |
|
} |
} |
|
|
|
table.LC_data_table { |
.LC_dropadd_labeltext { |
|
font-family: $sans; |
|
text-align: right; |
|
} |
|
|
|
.LC_preferences_labeltext { |
|
font-family: $sans; |
|
text-align: right; |
|
} |
|
|
|
.LC_roleslog_note { |
|
font-size: small; |
|
} |
|
|
|
.LC_mail_functions { |
|
font-weight: bold; |
|
} |
|
|
|
table.LC_aboutme_port { |
|
border: 0px; |
|
border-collapse: collapse; |
|
border-spacing: 0px; |
|
} |
|
table.LC_data_table, table.LC_mail_list { |
|
border: 1px solid #000000; |
border: 1px solid #000000; |
border-collapse: separate; |
border-collapse: separate; |
border-spacing: 1px; |
border-spacing: 1px; |
background: $pgbg; |
background: $pgbg; |
} |
} |
|
|
.LC_data_table_dense { |
.LC_data_table_dense { |
font-size: small; |
font-size: small; |
} |
} |
|
|
table.LC_nested_outer { |
table.LC_nested_outer { |
border: 1px solid #000000; |
border: 1px solid #000000; |
border-collapse: collapse; |
border-collapse: collapse; |
border-spacing: 0px; |
border-spacing: 0; |
width: 100%; |
width: 100%; |
} |
} |
|
|
|
table.LC_innerpickbox, |
table.LC_nested { |
table.LC_nested { |
border: 0px; |
border: none; |
border-collapse: collapse; |
border-collapse: collapse; |
border-spacing: 0px; |
border-spacing: 0; |
width: 100%; |
width: 100%; |
} |
} |
table.LC_data_table tr th, table.LC_calendar tr th, table.LC_mail_list tr th, |
|
table.LC_prior_tries tr th { |
.ui-accordion, |
|
.ui-accordion table.LC_data_table, |
|
.ui-accordion table.LC_nested_outer{ |
|
border: 0px; |
|
border-spacing: 0px; |
|
margin: 3px; |
|
} |
|
|
|
table.LC_data_table tr th, |
|
table.LC_calendar tr th, |
|
table.LC_prior_tries tr th, |
|
table.LC_innerpickbox tr th { |
font-weight: bold; |
font-weight: bold; |
background-color: $data_table_head; |
background-color: $data_table_head; |
|
color:$fontmenu; |
font-size:90%; |
font-size:90%; |
} |
} |
|
|
|
table.LC_innerpickbox tr th, |
|
table.LC_innerpickbox tr td { |
|
vertical-align: top; |
|
} |
|
|
table.LC_data_table tr.LC_info_row > td { |
table.LC_data_table tr.LC_info_row > td { |
background-color: #CCCCCC; |
background-color: #CCCCCC; |
font-weight: bold; |
font-weight: bold; |
text-align: left; |
text-align: left; |
} |
} |
table.LC_data_table tr.LC_odd_row > td, |
|
table.LC_pick_box tr > td.LC_odd_row, |
table.LC_data_table tr.LC_odd_row > td { |
table.LC_aboutme_port tr td { |
|
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_pick_box tr > td.LC_even_row, |
table.LC_pick_box tr > td.LC_odd_row { |
table.LC_aboutme_port tr.LC_even_row td { |
background-color: $data_table_light; |
|
vertical-align: top; |
|
} |
|
|
|
table.LC_data_table tr.LC_even_row > td { |
background-color: $data_table_dark; |
background-color: $data_table_dark; |
padding: 2px; |
padding: 2px; |
|
vertical-align: top; |
|
} |
|
|
|
table.LC_pick_box tr > td.LC_even_row { |
|
background-color: $data_table_dark; |
|
vertical-align: top; |
} |
} |
|
|
table.LC_data_table tr.LC_data_table_highlight td { |
table.LC_data_table tr.LC_data_table_highlight td { |
background-color: $data_table_darker; |
background-color: $data_table_darker; |
} |
} |
|
|
table.LC_data_table tr td.LC_leftcol_header { |
table.LC_data_table tr td.LC_leftcol_header { |
background-color: $data_table_head; |
background-color: $data_table_head; |
font-weight: bold; |
font-weight: bold; |
} |
} |
|
|
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: $sidebg; |
|
} |
|
|
|
table.LC_nested tr.LC_empty_row td { |
|
background-color: #FFFFFF; |
|
} |
|
|
|
table.LC_caption { |
|
} |
|
|
table.LC_nested tr.LC_empty_row td { |
table.LC_nested tr.LC_empty_row td { |
padding: 4ex |
padding: 4ex |
} |
} |
|
|
table.LC_nested_outer tr th { |
table.LC_nested_outer tr th { |
font-weight: bold; |
font-weight: bold; |
|
color:$fontmenu; |
background-color: $data_table_head; |
background-color: $data_table_head; |
font-size: small; |
font-size: small; |
border-bottom: 1px solid #000000; |
border-bottom: 1px solid #000000; |
} |
} |
|
|
table.LC_nested_outer tr td.LC_subheader { |
table.LC_nested_outer tr td.LC_subheader { |
background-color: $data_table_head; |
background-color: $data_table_head; |
font-weight: bold; |
font-weight: bold; |
Line 4803 table.LC_nested_outer tr td.LC_subheader
|
Line 5231 table.LC_nested_outer tr td.LC_subheader
|
border-bottom: 1px solid #000000; |
border-bottom: 1px solid #000000; |
text-align: right; |
text-align: right; |
} |
} |
|
|
table.LC_nested tr.LC_info_row td { |
table.LC_nested tr.LC_info_row td { |
background-color: #CCCCCC; |
background-color: #CCCCCC; |
font-weight: bold; |
font-weight: bold; |
font-size: small; |
font-size: small; |
text-align: center; |
text-align: center; |
} |
} |
|
|
table.LC_nested tr.LC_info_row td.LC_left_item, |
table.LC_nested tr.LC_info_row td.LC_left_item, |
table.LC_nested_outer tr th.LC_left_item { |
table.LC_nested_outer tr th.LC_left_item { |
text-align: left; |
text-align: left; |
} |
} |
|
|
table.LC_nested td { |
table.LC_nested td { |
background-color: #FFFFFF; |
background-color: #FFFFFF; |
font-size: small; |
font-size: small; |
} |
} |
|
|
table.LC_nested_outer tr th.LC_right_item, |
table.LC_nested_outer tr th.LC_right_item, |
table.LC_nested tr.LC_info_row td.LC_right_item, |
table.LC_nested tr.LC_info_row td.LC_right_item, |
table.LC_nested tr.LC_odd_row td.LC_right_item, |
table.LC_nested tr.LC_odd_row td.LC_right_item, |
Line 4824 table.LC_nested tr td.LC_right_item {
|
Line 5256 table.LC_nested tr td.LC_right_item {
|
text-align: right; |
text-align: right; |
} |
} |
|
|
|
.ui-accordion table.LC_nested tr.LC_odd_row td.LC_left_item, |
|
.ui-accordion table.LC_nested tr.LC_even_row td.LC_left_item { |
|
text-align: right; |
|
width: 40%; |
|
padding-right:10px; |
|
vertical-align: top; |
|
padding: 5px; |
|
} |
|
|
|
.ui-accordion table.LC_nested tr.LC_odd_row td.LC_right_item, |
|
.ui-accordion table.LC_nested tr.LC_even_row td.LC_right_item { |
|
text-align: left; |
|
width: 60%; |
|
padding: 2px 4px; |
|
} |
|
|
table.LC_nested tr.LC_odd_row td { |
table.LC_nested tr.LC_odd_row td { |
background-color: #EEEEEE; |
background-color: #EEEEEE; |
} |
} |
Line 4844 table.LC_createuser tr.LC_info_row td {
|
Line 5292 table.LC_createuser tr.LC_info_row td {
|
table.LC_calendar { |
table.LC_calendar { |
border: 1px solid #000000; |
border: 1px solid #000000; |
border-collapse: collapse; |
border-collapse: collapse; |
|
width: 98%; |
} |
} |
|
|
table.LC_calendar_pickdate { |
table.LC_calendar_pickdate { |
font-size: xx-small; |
font-size: xx-small; |
} |
} |
|
|
table.LC_calendar tr td { |
table.LC_calendar tr td { |
border: 1px solid #000000; |
border: 1px solid #000000; |
vertical-align: top; |
vertical-align: top; |
|
width: 14%; |
} |
} |
|
|
table.LC_calendar tr td.LC_calendar_day_empty { |
table.LC_calendar tr td.LC_calendar_day_empty { |
background-color: $data_table_dark; |
background-color: $data_table_dark; |
} |
} |
|
|
table.LC_calendar tr td.LC_calendar_day_current { |
table.LC_calendar tr td.LC_calendar_day_current { |
background-color: $data_table_highlight; |
background-color: $data_table_highlight; |
} |
} |
|
|
table.LC_mail_list tr.LC_mail_new { |
table.LC_data_table tr td.LC_mail_new { |
background-color: $mail_new; |
background-color: $mail_new; |
} |
} |
table.LC_mail_list tr.LC_mail_new:hover { |
|
|
table.LC_data_table tr.LC_mail_new:hover { |
background-color: $mail_new_hover; |
background-color: $mail_new_hover; |
} |
} |
table.LC_mail_list tr.LC_mail_read { |
|
|
table.LC_data_table tr td.LC_mail_read { |
background-color: $mail_read; |
background-color: $mail_read; |
} |
} |
table.LC_mail_list tr.LC_mail_read:hover { |
|
|
/* |
|
table.LC_data_table tr.LC_mail_read:hover { |
background-color: $mail_read_hover; |
background-color: $mail_read_hover; |
} |
} |
table.LC_mail_list tr.LC_mail_replied { |
*/ |
|
|
|
table.LC_data_table tr td.LC_mail_replied { |
background-color: $mail_replied; |
background-color: $mail_replied; |
} |
} |
table.LC_mail_list tr.LC_mail_replied:hover { |
|
|
/* |
|
table.LC_data_table tr.LC_mail_replied:hover { |
background-color: $mail_replied_hover; |
background-color: $mail_replied_hover; |
} |
} |
table.LC_mail_list tr.LC_mail_other { |
*/ |
|
|
|
table.LC_data_table tr td.LC_mail_other { |
background-color: $mail_other; |
background-color: $mail_other; |
} |
} |
table.LC_mail_list tr.LC_mail_other:hover { |
|
|
/* |
|
table.LC_data_table tr.LC_mail_other:hover { |
background-color: $mail_other_hover; |
background-color: $mail_other_hover; |
} |
} |
table.LC_mail_list tr.LC_mail_even { |
*/ |
} |
|
table.LC_mail_list tr.LC_mail_odd { |
|
} |
|
|
|
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, |
table.LC_data_table tr > td.LC_browser_file_unpublished { |
table.LC_data_table tr > td.LC_browser_file_unpublished { |
background: #FFAA99; |
background: #FFAA99; |
} |
} |
|
|
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 { |
/* background: #77FF77; */ |
/* background: #77FF77; */ |
} |
} |
|
|
table.LC_data_table tr > td.LC_roles_future { |
table.LC_data_table tr > td.LC_roles_future { |
background: #FFFF77; |
border-right: 8px solid #FFFF77; |
} |
} |
|
|
table.LC_data_table tr > td.LC_roles_will { |
table.LC_data_table tr > td.LC_roles_will { |
background: #FFAA77; |
border-right: 8px solid #FFAA77; |
} |
} |
|
|
table.LC_data_table tr > td.LC_roles_expired { |
table.LC_data_table tr > td.LC_roles_expired { |
background: #FF7777; |
border-right: 8px solid #FF7777; |
} |
} |
|
|
table.LC_data_table tr > td.LC_roles_will_not { |
table.LC_data_table tr > td.LC_roles_will_not { |
background: #AAFF77; |
border-right: 8px solid #AAFF77; |
} |
} |
|
|
table.LC_data_table tr > td.LC_roles_selected { |
table.LC_data_table tr > td.LC_roles_selected { |
background: #11CC55; |
border-right: 8px solid #11CC55; |
} |
} |
|
|
span.LC_current_location { |
span.LC_current_location { |
Line 4933 span.LC_current_location {
|
Line 5405 span.LC_current_location {
|
|
|
span.LC_parm_menu_item { |
span.LC_parm_menu_item { |
font-size: larger; |
font-size: larger; |
font-family: $sans; |
|
} |
} |
|
|
span.LC_parm_scope_all { |
span.LC_parm_scope_all { |
color: red; |
color: red; |
} |
} |
|
|
span.LC_parm_scope_folder { |
span.LC_parm_scope_folder { |
color: green; |
color: green; |
} |
} |
|
|
span.LC_parm_scope_resource { |
span.LC_parm_scope_resource { |
color: orange; |
color: orange; |
} |
} |
|
|
span.LC_parm_part { |
span.LC_parm_part { |
color: blue; |
color: blue; |
} |
} |
span.LC_parm_folder, span.LC_parm_symb { |
|
|
span.LC_parm_folder, |
|
span.LC_parm_symb { |
font-size: x-small; |
font-size: x-small; |
font-family: $mono; |
font-family: $mono; |
color: #AAAAAA; |
color: #AAAAAA; |
} |
} |
|
|
td.LC_parm_overview_level_menu, td.LC_parm_overview_map_menu, |
ul.LC_parm_parmlist li { |
td.LC_parm_overview_parm_selectors, td.LC_parm_overview_parm_restrictions { |
display: inline-block; |
|
padding: 0.3em 0.8em; |
|
vertical-align: top; |
|
width: 150px; |
|
border-top:1px solid $lg_border_color; |
|
} |
|
|
|
td.LC_parm_overview_level_menu, |
|
td.LC_parm_overview_map_menu, |
|
td.LC_parm_overview_parm_selectors, |
|
td.LC_parm_overview_restrictions { |
border: 1px solid black; |
border: 1px solid black; |
border-collapse: collapse; |
border-collapse: collapse; |
} |
} |
|
|
table.LC_parm_overview_restrictions td { |
table.LC_parm_overview_restrictions td { |
border-width: 1px 4px 1px 4px; |
border-width: 1px 4px 1px 4px; |
border-style: solid; |
border-style: solid; |
border-color: $pgbg; |
border-color: $pgbg; |
text-align: center; |
text-align: center; |
} |
} |
|
|
table.LC_parm_overview_restrictions th { |
table.LC_parm_overview_restrictions th { |
background: $tabbg; |
background: $tabbg; |
border-width: 1px 4px 1px 4px; |
border-width: 1px 4px 1px 4px; |
border-style: solid; |
border-style: solid; |
border-color: $pgbg; |
border-color: $pgbg; |
} |
} |
|
|
table#LC_helpmenu { |
table#LC_helpmenu { |
border: 0px; |
border: none; |
height: 55px; |
height: 55px; |
border-spacing: 0px; |
border-spacing: 0; |
} |
} |
|
|
table#LC_helpmenu fieldset legend { |
table#LC_helpmenu fieldset legend { |
font-size: larger; |
font-size: larger; |
font-weight: bold; |
|
} |
} |
|
|
table#LC_helpmenu_links { |
table#LC_helpmenu_links { |
width: 100%; |
width: 100%; |
border: 1px solid black; |
border: 1px solid black; |
background: $pgbg; |
background: $pgbg; |
padding: 0px; |
padding: 0; |
border-spacing: 1px; |
border-spacing: 1px; |
} |
} |
|
|
table#LC_helpmenu_links tr td { |
table#LC_helpmenu_links tr td { |
padding: 1px; |
padding: 1px; |
background: $tabbg; |
background: $tabbg; |
Line 4994 table#LC_helpmenu_links tr td {
|
Line 5485 table#LC_helpmenu_links tr td {
|
font-weight: bold; |
font-weight: bold; |
} |
} |
|
|
table#LC_helpmenu_links a:link, table#LC_helpmenu_links a:visited, |
table#LC_helpmenu_links a:link, |
|
table#LC_helpmenu_links a:visited, |
table#LC_helpmenu_links a:active { |
table#LC_helpmenu_links a:active { |
text-decoration: none; |
text-decoration: none; |
color: $font; |
color: $font; |
} |
} |
|
|
table#LC_helpmenu_links a:hover { |
table#LC_helpmenu_links a:hover { |
text-decoration: underline; |
text-decoration: underline; |
color: $vlink; |
color: $vlink; |
Line 5008 table#LC_helpmenu_links a:hover {
|
Line 5501 table#LC_helpmenu_links a:hover {
|
border: 1px solid #339933; |
border: 1px solid #339933; |
margin: -1px; |
margin: -1px; |
} |
} |
|
|
.LC_chrt_popup_up { |
.LC_chrt_popup_up { |
border: 1px solid yellow; |
border: 1px solid yellow; |
margin: -1px; |
margin: -1px; |
} |
} |
|
|
.LC_chrt_popup { |
.LC_chrt_popup { |
border: 1px solid #8888FF; |
border: 1px solid #8888FF; |
background: #CCCCFF; |
background: #CCCCFF; |
} |
} |
|
|
table.LC_pick_box { |
table.LC_pick_box { |
border-collapse: separate; |
border-collapse: separate; |
background: white; |
background: white; |
border: 1px solid black; |
border: 1px solid black; |
border-spacing: 1px; |
border-spacing: 1px; |
} |
} |
|
|
table.LC_pick_box td.LC_pick_box_title { |
table.LC_pick_box td.LC_pick_box_title { |
background: $tabbg; |
background: $sidebg; |
font-weight: bold; |
font-weight: bold; |
text-align: right; |
text-align: left; |
|
vertical-align: top; |
width: 184px; |
width: 184px; |
padding: 8px; |
padding: 8px; |
} |
} |
table.LC_pick_box td.LC_selfenroll_pick_box_title { |
|
background: $tabbg; |
|
font-weight: bold; |
|
text-align: right; |
|
width: 350px; |
|
padding: 8px; |
|
} |
|
|
|
table.LC_pick_box td.LC_pick_box_value { |
table.LC_pick_box td.LC_pick_box_value { |
text-align: left; |
text-align: left; |
padding: 8px; |
padding: 8px; |
} |
} |
|
|
table.LC_pick_box td.LC_pick_box_select { |
table.LC_pick_box td.LC_pick_box_select { |
text-align: left; |
text-align: left; |
padding: 8px; |
padding: 8px; |
} |
} |
|
|
table.LC_pick_box td.LC_pick_box_separator { |
table.LC_pick_box td.LC_pick_box_separator { |
padding: 0px; |
padding: 0; |
height: 1px; |
height: 1px; |
background: black; |
background: black; |
} |
} |
|
|
table.LC_pick_box td.LC_pick_box_submit { |
table.LC_pick_box td.LC_pick_box_submit { |
text-align: right; |
text-align: right; |
} |
} |
|
|
table.LC_pick_box td.LC_evenrow_value { |
table.LC_pick_box td.LC_evenrow_value { |
text-align: left; |
text-align: left; |
padding: 8px; |
padding: 8px; |
background-color: $data_table_light; |
background-color: $data_table_light; |
} |
} |
|
|
table.LC_pick_box td.LC_oddrow_value { |
table.LC_pick_box td.LC_oddrow_value { |
text-align: left; |
text-align: left; |
padding: 8px; |
padding: 8px; |
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: 0px; |
|
height: 1px; |
|
background: black; |
|
} |
|
span.LC_helpform_receipt_cat { |
span.LC_helpform_receipt_cat { |
font-weight: bold; |
font-weight: bold; |
} |
} |
|
|
table.LC_group_priv_box { |
table.LC_group_priv_box { |
background: white; |
background: white; |
border: 1px solid black; |
border: 1px solid black; |
border-spacing: 1px; |
border-spacing: 1px; |
} |
} |
|
|
table.LC_group_priv_box td.LC_pick_box_title { |
table.LC_group_priv_box td.LC_pick_box_title { |
background: $tabbg; |
background: $tabbg; |
font-weight: bold; |
font-weight: bold; |
text-align: right; |
text-align: right; |
width: 184px; |
width: 184px; |
} |
} |
|
|
table.LC_group_priv_box td.LC_groups_fixed { |
table.LC_group_priv_box td.LC_groups_fixed { |
background: $data_table_light; |
background: $data_table_light; |
text-align: center; |
text-align: center; |
} |
} |
|
|
table.LC_group_priv_box td.LC_groups_optional { |
table.LC_group_priv_box td.LC_groups_optional { |
background: $data_table_dark; |
background: $data_table_dark; |
text-align: center; |
text-align: center; |
} |
} |
|
|
table.LC_group_priv_box td.LC_groups_functionality { |
table.LC_group_priv_box td.LC_groups_functionality { |
background: $data_table_darker; |
background: $data_table_darker; |
text-align: center; |
text-align: center; |
font-weight: bold; |
font-weight: bold; |
} |
} |
|
|
table.LC_group_priv td { |
table.LC_group_priv td { |
text-align: left; |
text-align: left; |
padding: 0px; |
padding: 0; |
} |
} |
|
|
table.LC_notify_front_page { |
|
background: white; |
|
border: 1px solid black; |
|
padding: 8px; |
|
} |
|
table.LC_notify_front_page td { |
|
padding: 8px; |
|
} |
|
.LC_navbuttons { |
.LC_navbuttons { |
margin: 2ex 0ex 2ex 0ex; |
margin: 2ex 0ex 2ex 0ex; |
} |
} |
|
|
.LC_topic_bar { |
.LC_topic_bar { |
font-family: $sans; |
|
font-weight: bold; |
font-weight: bold; |
width: 100%; |
|
background: $tabbg; |
background: $tabbg; |
vertical-align: middle; |
margin: 1em 0em 1em 2em; |
margin: 2ex 0ex 2ex 0ex; |
padding: 3px; |
|
font-size: 1.2em; |
} |
} |
|
|
.LC_topic_bar span { |
.LC_topic_bar span { |
|
left: 0.5em; |
|
position: absolute; |
vertical-align: middle; |
vertical-align: middle; |
|
font-size: 1.2em; |
} |
} |
.LC_topic_bar img { |
|
vertical-align: bottom; |
|
} |
|
table.LC_course_group_status { |
table.LC_course_group_status { |
margin: 20px; |
margin: 20px; |
} |
} |
|
|
table.LC_status_selector td { |
table.LC_status_selector td { |
vertical-align: top; |
vertical-align: top; |
text-align: center; |
text-align: center; |
padding: 4px; |
padding: 4px; |
} |
} |
table.LC_descriptive_input td.LC_description { |
|
vertical-align: top; |
|
text-align: right; |
|
font-weight: bold; |
|
} |
|
div.LC_feedback_link { |
div.LC_feedback_link { |
clear: both; |
clear: both; |
background: white; |
background: $sidebg; |
width: 100%; |
width: 100%; |
|
padding-bottom: 10px; |
|
border: 1px $tabbg solid; |
|
height: 22px; |
|
line-height: 22px; |
|
padding-top: 5px; |
|
} |
|
|
|
div.LC_feedback_link img { |
|
height: 22px; |
|
vertical-align:middle; |
|
} |
|
|
|
div.LC_feedback_link a { |
|
text-decoration: none; |
|
} |
|
|
|
div.LC_comblock { |
|
display:inline; |
|
color:$font; |
|
font-size:90%; |
|
} |
|
|
|
div.LC_feedback_link div.LC_comblock { |
|
padding-left:5px; |
} |
} |
|
|
|
div.LC_feedback_link div.LC_comblock a { |
|
color:$font; |
|
} |
|
|
span.LC_feedback_link { |
span.LC_feedback_link { |
background: $feedback_link_bg; |
/* background: $feedback_link_bg; */ |
font-size: larger; |
font-size: larger; |
} |
} |
|
|
span.LC_message_link { |
span.LC_message_link { |
background: $feedback_link_bg; |
/* background: $feedback_link_bg; */ |
font-size: larger; |
font-size: larger; |
position: absolute; |
position: absolute; |
right: 1em; |
right: 1em; |
Line 5189 table.LC_prior_tries td {
|
Line 5684 table.LC_prior_tries td {
|
} |
} |
|
|
.LC_answer_correct { |
.LC_answer_correct { |
background: #AAFFAA; |
background: lightgreen; |
color: black; |
color: darkgreen; |
|
padding: 6px; |
} |
} |
|
|
.LC_answer_charged_try { |
.LC_answer_charged_try { |
background: #FFAAAA ! important; |
background: #FFAAAA; |
color: black; |
color: darkred; |
|
padding: 6px; |
} |
} |
.LC_answer_not_charged_try, |
|
|
.LC_answer_not_charged_try, |
.LC_answer_no_grade, |
.LC_answer_no_grade, |
.LC_answer_late { |
.LC_answer_late { |
background: #FFFFAA; |
background: lightyellow; |
color: black; |
color: black; |
|
padding: 6px; |
} |
} |
|
|
.LC_answer_previous { |
.LC_answer_previous { |
background: #AAAAFF; |
background: lightblue; |
color: black; |
color: darkblue; |
|
padding: 6px; |
} |
} |
|
|
.LC_answer_no_message { |
.LC_answer_no_message { |
background: #FFFFFF; |
background: #FFFFFF; |
color: black; |
color: black; |
|
padding: 6px; |
} |
} |
|
|
.LC_answer_unknown { |
.LC_answer_unknown { |
background: orange; |
background: orange; |
color: black; |
color: black; |
|
padding: 6px; |
} |
} |
|
|
|
|
span.LC_prior_numerical, |
span.LC_prior_numerical, |
span.LC_prior_string, |
span.LC_prior_string, |
span.LC_prior_custom, |
span.LC_prior_custom, |
span.LC_prior_reaction, |
span.LC_prior_reaction, |
span.LC_prior_math { |
span.LC_prior_math { |
font-family: monospace; |
font-family: $mono; |
white-space: pre; |
white-space: pre; |
} |
} |
|
|
span.LC_prior_string { |
span.LC_prior_string { |
font-family: monospace; |
font-family: $mono; |
white-space: pre; |
white-space: pre; |
} |
} |
|
|
Line 5234 table.LC_prior_option {
|
Line 5739 table.LC_prior_option {
|
width: 100%; |
width: 100%; |
border-collapse: collapse; |
border-collapse: collapse; |
} |
} |
table.LC_prior_rank, table.LC_prior_match { |
|
|
table.LC_prior_rank, |
|
table.LC_prior_match { |
border-collapse: collapse; |
border-collapse: collapse; |
} |
} |
|
|
table.LC_prior_option tr td, |
table.LC_prior_option tr td, |
table.LC_prior_rank tr td, |
table.LC_prior_rank tr td, |
table.LC_prior_match tr td { |
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 5256 span.LC_cusr_subheading {
|
Line 5764 span.LC_cusr_subheading {
|
font-size: 85%; |
font-size: 85%; |
} |
} |
|
|
table.LC_docs_documents { |
div.LC_docs_entry_move { |
background: #BBBBBB; |
border: 1px solid #BBBBBB; |
border-width: 0px; |
|
border-collapse: collapse; |
|
} |
|
|
|
table.LC_docs_documents td.LC_docs_document { |
|
border: 2px solid black; |
|
padding: 4px; |
|
} |
|
|
|
.LC_docs_entry_move { |
|
border: 0px; |
|
border-collapse: collapse; |
|
} |
|
|
|
.LC_docs_entry_move td { |
|
border: 2px solid #BBBBBB; |
|
background: #DDDDDD; |
background: #DDDDDD; |
|
width: 22px; |
|
padding: 1px; |
|
margin: 0; |
} |
} |
|
|
.LC_docs_editor td.LC_docs_entry_commands { |
table.LC_data_table tr > td.LC_docs_entry_commands, |
|
table.LC_data_table tr > td.LC_docs_entry_parameter { |
background: #DDDDDD; |
background: #DDDDDD; |
font-size: x-small; |
font-size: x-small; |
} |
} |
|
|
|
.LC_docs_entry_parameter { |
|
white-space: nowrap; |
|
} |
|
|
.LC_docs_copy { |
.LC_docs_copy { |
color: #000099; |
color: #000099; |
} |
} |
|
|
.LC_docs_cut { |
.LC_docs_cut { |
color: #550044; |
color: #550044; |
} |
} |
|
|
.LC_docs_rename { |
.LC_docs_rename { |
color: #009900; |
color: #009900; |
} |
} |
|
|
.LC_docs_remove { |
.LC_docs_remove { |
color: #990000; |
color: #990000; |
} |
} |
Line 5299 table.LC_docs_documents td.LC_docs_docum
|
Line 5803 table.LC_docs_documents td.LC_docs_docum
|
font-size: x-small; |
font-size: x-small; |
} |
} |
|
|
.LC_docs_editor td.LC_docs_entry_title, |
|
.LC_docs_editor td.LC_docs_entry_icon { |
|
background: #FFFFBB; |
|
} |
|
.LC_docs_editor td.LC_docs_entry_parameter { |
|
background: #BBBBFF; |
|
font-size: x-small; |
|
white-space: nowrap; |
|
} |
|
|
|
table.LC_docs_adddocs td, |
table.LC_docs_adddocs td, |
table.LC_docs_adddocs th { |
table.LC_docs_adddocs th { |
border: 1px solid #BBBBBB; |
border: 1px solid #BBBBBB; |
Line 5319 table.LC_docs_adddocs th {
|
Line 5813 table.LC_docs_adddocs th {
|
table.LC_sty_begin { |
table.LC_sty_begin { |
background: #BBFFBB; |
background: #BBFFBB; |
} |
} |
|
|
table.LC_sty_end { |
table.LC_sty_end { |
background: #FFBBBB; |
background: #FFBBBB; |
} |
} |
|
|
table.LC_double_column { |
table.LC_double_column { |
border-width: 0px; |
border-width: 0; |
border-collapse: collapse; |
border-collapse: collapse; |
width: 100%; |
width: 100%; |
padding: 2px; |
padding: 2px; |
Line 5339 table.LC_double_column tr td.LC_left_col
|
Line 5834 table.LC_double_column tr td.LC_left_col
|
|
|
table.LC_double_column tr td.LC_right_col { |
table.LC_double_column tr td.LC_right_col { |
top: 2px; |
top: 2px; |
right: 2px; |
right: 2px; |
width: 47%; |
width: 47%; |
vertical-align: top; |
vertical-align: top; |
} |
} |
|
|
span.LC_role_level { |
|
font-weight: bold; |
|
} |
|
|
|
div.LC_left_float { |
div.LC_left_float { |
float: left; |
float: left; |
padding-right: 5%; |
padding-right: 5%; |
Line 5363 div.LC_clear_float_footer {
|
Line 5854 div.LC_clear_float_footer {
|
clear: both; |
clear: both; |
} |
} |
|
|
|
|
div.LC_grade_show_user { |
div.LC_grade_show_user { |
margin-top: 20px; |
/* border-left: 5px solid $sidebg; */ |
border: 1px solid black; |
border-top: 5px solid #000000; |
|
margin: 50px 0 0 0; |
|
padding: 15px 0 5px 10px; |
} |
} |
div.LC_grade_user_name { |
|
background: #DDDDEE; |
div.LC_grade_show_user_odd_row { |
border-bottom: 1px solid black; |
/* border-left: 5px solid #000000; */ |
font-weight: bold; |
|
font-size: large; |
|
} |
} |
div.LC_grade_show_user_odd_row div.LC_grade_user_name { |
|
background: #DDEEDD; |
div.LC_grade_show_user div.LC_Box { |
|
margin-right: 50px; |
} |
} |
|
|
div.LC_grade_show_problem, |
|
div.LC_grade_submissions, |
div.LC_grade_submissions, |
div.LC_grade_message_center, |
div.LC_grade_message_center, |
div.LC_grade_info_links, |
div.LC_grade_info_links { |
div.LC_grade_assign { |
|
margin: 5px; |
margin: 5px; |
width: 99%; |
width: 99%; |
background: #FFFFFF; |
background: #FFFFFF; |
} |
} |
div.LC_grade_show_problem_header, |
|
div.LC_grade_submissions_header, |
div.LC_grade_submissions_header, |
div.LC_grade_message_center_header, |
div.LC_grade_message_center_header { |
div.LC_grade_assign_header { |
|
font-weight: bold; |
font-weight: bold; |
font-size: large; |
font-size: large; |
} |
} |
div.LC_grade_show_problem_problem, |
|
div.LC_grade_submissions_body, |
div.LC_grade_submissions_body, |
div.LC_grade_message_center_body, |
div.LC_grade_message_center_body { |
div.LC_grade_assign_body { |
|
border: 1px solid black; |
border: 1px solid black; |
width: 99%; |
width: 99%; |
background: #FFFFFF; |
background: #FFFFFF; |
} |
} |
span.LC_grade_check_note { |
|
font-weight: normal; |
|
font-size: medium; |
|
display: inline; |
|
position: absolute; |
|
right: 1em; |
|
} |
|
|
|
table.LC_scantron_action { |
table.LC_scantron_action { |
width: 100%; |
width: 100%; |
} |
} |
|
|
table.LC_scantron_action tr th { |
table.LC_scantron_action tr th { |
font-weight:bold; |
font-weight:bold; |
font-style:normal; |
font-style:normal; |
} |
} |
.LC_edit_problem_header, |
|
|
.LC_edit_problem_header, |
div.LC_edit_problem_footer { |
div.LC_edit_problem_footer { |
font-weight: normal; |
font-weight: normal; |
font-size: medium; |
font-size: medium; |
margin: 2px; |
margin: 2px; |
} |
} |
|
|
div.LC_edit_problem_header, |
div.LC_edit_problem_header, |
div.LC_edit_problem_header div, |
div.LC_edit_problem_header div, |
div.LC_edit_problem_footer, |
div.LC_edit_problem_footer, |
Line 5431 div.LC_edit_problem_editxml_header,
|
Line 5914 div.LC_edit_problem_editxml_header,
|
div.LC_edit_problem_editxml_header div { |
div.LC_edit_problem_editxml_header div { |
margin-top: 5px; |
margin-top: 5px; |
} |
} |
div.LC_edit_problem_header_edit_row { |
|
background: $tabbg; |
|
padding: 3px; |
|
margin-bottom: 5px; |
|
} |
|
div.LC_edit_problem_header_title { |
div.LC_edit_problem_header_title { |
font-weight: bold; |
font-weight: bold; |
font-size: larger; |
font-size: larger; |
background: $tabbg; |
background: $tabbg; |
padding: 3px; |
padding: 3px; |
} |
} |
|
|
table.LC_edit_problem_header_title { |
table.LC_edit_problem_header_title { |
font-size: larger; |
|
font-weight: bold; |
|
width: 100%; |
width: 100%; |
border-color: $pgbg; |
|
border-style: solid; |
|
border-width: $border; |
|
|
|
background: $tabbg; |
background: $tabbg; |
border-collapse: collapse; |
|
padding: 0px |
|
} |
} |
|
|
div.LC_edit_problem_discards { |
div.LC_edit_problem_discards { |
float: left; |
float: left; |
padding-bottom: 5px; |
padding-bottom: 5px; |
} |
} |
|
|
div.LC_edit_problem_saves { |
div.LC_edit_problem_saves { |
float: right; |
float: right; |
padding-bottom: 5px; |
padding-bottom: 5px; |
} |
} |
hr.LC_edit_problem_divide { |
|
clear: both; |
|
color: $tabbg; |
|
background-color: $tabbg; |
|
height: 3px; |
|
border: 0px; |
|
} |
|
img.stift{ |
|
border-width:0; |
|
vertical-align:middle; |
|
} |
|
|
|
table#LC_mainmenu{ |
|
margin-top:10px; |
|
width:80%; |
|
|
|
|
img.stift { |
|
border-width: 0; |
|
vertical-align: middle; |
} |
} |
|
|
table#LC_mainmenu td.LC_mainmenu_col_fieldset{ |
table td.LC_mainmenu_col_fieldset { |
vertical-align: top; |
vertical-align: top; |
width: 45%; |
|
} |
|
.LC_mainmenu_fieldset_category { |
|
color: $font; |
|
background: $pgbg; |
|
font-family: $sans; |
|
font-size: small; |
|
font-weight: bold; |
|
} |
} |
|
|
div.LC_createcourse { |
div.LC_createcourse { |
margin: 10px 10px 10px 10px; |
margin: 10px 10px 10px 10px; |
} |
} |
|
|
/* ---- Remove when done ---- |
.LC_dccid { |
# The following styles is part of the redesign of LON-CAPA and are |
margin: 0.2em 0 0 0; |
# subject to change during this project. |
padding: 0; |
# Don't rely on their current functionality as they might be |
font-size: 90%; |
# changed or removed. |
display:none; |
# --------------------------*/ |
} |
|
|
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:$button_hover; |
text-decoration:none; |
text-decoration:none; |
} |
} |
|
|
h1 { |
h1 { |
padding:5px 10px 5px 20px; |
padding: 0; |
line-height:130%; |
line-height:130%; |
} |
} |
|
|
h2,h3,h4,h5,h6 |
h2, |
{ |
h3, |
margin:5px 0px 5px 0px; |
h4, |
padding:0px; |
h5, |
line-height:130%; |
h6 { |
} |
margin: 5px 0 5px 0; |
.LC_hcell{ |
padding: 0; |
padding:3px 15px 3px 15px; |
line-height:130%; |
margin:0px; |
} |
background-color:$tabbg; |
|
border-bottom:solid 1px $lg_border_color; |
.LC_hcell { |
|
padding:3px 15px 3px 15px; |
|
margin: 0; |
|
background-color:$tabbg; |
|
color:$fontmenu; |
|
border-bottom:solid 1px $lg_border_color; |
} |
} |
|
|
|
.LC_Box > .LC_hcell { |
|
margin: 0 -10px 10px -10px; |
|
} |
|
|
.LC_noBorder { |
.LC_noBorder { |
border:0px; |
border: 0; |
} |
} |
|
|
.LC_bgLightGrey{ |
.LC_FormSectionClearButton input { |
background:URL(/adm/lonIcons/lightGreyBG.png) repeat-x left top; |
background-color:transparent; |
|
border: none; |
|
cursor:pointer; |
|
text-decoration:underline; |
} |
} |
.LC_bgLightGreyYellow { |
|
background-color:#EFECE0; |
.LC_help_open_topic { |
|
color: #FFFFFF; |
|
background-color: #EEEEFF; |
|
margin: 1px; |
|
padding: 4px; |
|
border: 1px solid #000033; |
|
white-space: nowrap; |
|
/* vertical-align: middle; */ |
} |
} |
|
|
/* Main Header with discription of Person, Course, etc. */ |
dl, |
.LC_HeadRight { |
ul, |
text-align: right; |
div, |
float: right; |
fieldset { |
margin: 0px; |
margin: 10px 10px 10px 0; |
padding: 0px; |
/* overflow: hidden; */ |
right:0; |
|
position:absolute; |
|
overflow:hidden; |
|
} |
} |
|
|
p, .LC_ContentBox { |
fieldset > legend { |
padding: 10px; |
font-weight: bold; |
|
padding: 0 5px 0 5px; |
|
} |
|
|
|
#LC_nav_bar { |
|
float: left; |
|
margin: 0 0 2px 0; |
} |
} |
.LC_FormSectionClearButton input { |
|
|
#LC_realm { |
border:0px; |
margin: 0.2em 0 0 0; |
cursor:pointer; |
padding: 0; |
text-decoration:underline; |
font-weight: bold; |
|
text-align: center; |
|
} |
|
|
|
#LC_nav_bar em { |
|
font-weight: bold; |
|
font-style: normal; |
|
} |
|
|
|
ol.LC_primary_menu { |
|
float: right; |
|
margin: 0; |
|
} |
|
|
|
ol#LC_PathBreadcrumbs { |
|
margin: 0; |
|
} |
|
|
|
ol.LC_primary_menu li { |
|
display: inline; |
|
padding: 5px 5px 0 10px; |
|
vertical-align: top; |
} |
} |
|
|
|
ol.LC_primary_menu li img { |
|
vertical-align: bottom; |
|
height: 1.1em; |
|
} |
|
|
dl,ul,div,fieldset { |
ol.LC_primary_menu a { |
margin: 10px 10px 10px 0px; |
color: RGB(80, 80, 80); |
overflow:hidden; |
text-decoration: none; |
} |
} |
ol.LC_smallMenu, ol#LC_PathBreadcrumbs { |
|
margin: 0px; |
ol.LC_primary_menu a.LC_new_message { |
|
font-weight:bold; |
|
color: darkred; |
} |
} |
|
|
ol.LC_smallMenu li { |
ol.LC_docs_parameters { |
display: inline; |
margin-left: 0; |
padding: 5px 5px 0px 10px; |
padding: 0; |
vertical-align: top; |
list-style: none; |
} |
} |
|
|
ol.LC_smallMenu li img { |
ol.LC_docs_parameters li { |
vertical-align: bottom; |
margin: 0; |
|
padding-right: 20px; |
|
display: inline; |
} |
} |
|
|
ol.LC_smallMenu a { |
ol.LC_docs_parameters li:before { |
font-size: 90%; |
content: "\\002022 \\0020"; |
color: RGB(80, 80, 80); |
|
text-decoration: none; |
|
} |
} |
|
|
ol#LC_TabMainMenuContent { |
li.LC_docs_parameters_title { |
display:block; |
font-weight: bold; |
list-style:none; |
|
margin: 0px 0px 10px 0px; |
|
padding: 0px; |
|
} |
} |
|
|
ol#LC_TabMainMenuContent li { |
ol.LC_docs_parameters li.LC_docs_parameters_title:before { |
display: inline; |
content: ""; |
vertical-align: bottom; |
|
border-bottom: solid 1px RGB(175, 175, 175); |
|
border-right: solid 1px RGB(175, 175, 175); |
|
padding: 5px 10px 5px 10px; |
|
margin-right:3px; |
|
line-height: 140%; |
|
font-weight: bold; |
|
white-space:nowrap; |
|
background: url(/adm/lonIcons/lightGreyBG.png) repeat-x left top; |
|
} |
} |
|
|
ol#LC_TabMainMenuContent li a{ |
ul#LC_secondary_menu { |
color: RGB(47, 47, 47); |
clear: both; |
text-decoration: none; |
color: $fontmenu; |
|
background: $tabbg; |
|
list-style: none; |
|
padding: 0; |
|
margin: 0; |
|
width: 100%; |
} |
} |
|
|
|
ul#LC_secondary_menu li { |
|
font-weight: bold; |
|
line-height: 1.8em; |
|
padding: 0 0.8em; |
|
border-right: 1px solid black; |
|
display: inline; |
|
vertical-align: middle; |
|
} |
|
|
ul.LC_TabContent { |
ul.LC_TabContent { |
margin:0px; |
display:block; |
padding:0px; |
background: $sidebg; |
display:block; |
border-bottom: solid 1px $lg_border_color; |
list-style:none; |
list-style:none; |
min-height:1.5em; |
margin: 0 -10px; |
} |
padding: 0; |
ul.LC_TabContent li{ |
|
display:inline; |
|
vertical-align:top; |
|
border-bottom:solid 1px $lg_border_color; |
|
border-right:solid 1px $lg_border_color; |
|
padding:5px 10px 5px 10px; |
|
margin-right:2px; |
|
background: url(/adm/lonIcons/lightGreyBG.png) repeat-x left top; |
|
} |
|
ul.LC_TabContent li a, ul.LC_TabContent li{ |
|
color:rgb(47,47,47); |
|
text-decoration:none; |
|
font-size:95%; |
|
font-weight:bold; |
|
white-space:nowrap; |
|
} |
} |
.LC_hideThis |
|
{ |
ul.LC_TabContent li, |
display:none; |
ul.LC_TabContentBigger li { |
visibility:hidden; |
float:left; |
} |
} |
|
|
ol#LC_MenuBreadcrumbs, ol#LC_PathBreadcrumbs { |
ul#LC_secondary_menu li a { |
border-top: solid 1px RGB(255, 255, 255); |
color: $fontmenu; |
height: 20px; |
text-decoration: none; |
line-height: 20px; |
|
vertical-align: bottom; |
|
margin: 0px 0px 30px 0px; |
|
padding-left: 10px; |
|
list-style-position: inside; |
|
background: url(/adm/lonIcons/lightGreyBG.png) repeat-x left top; |
|
} |
|
|
|
ol#LC_MenuBreadcrumbs li, ol#LC_PathBreadcrumbs li { |
|
background: url(/adm/lonIcons/arrow_white.png) no-repeat left center; |
|
display: inline; |
|
padding: 0px 0px 0px 10px; |
|
vertical-align: bottom; |
|
overflow:hidden; |
|
} |
|
|
|
ol#LC_MenuBreadcrumbs li a { |
|
text-decoration: none; |
|
font-size:90%; |
|
} |
|
ol#LC_PathBreadcrumbs li a{ |
|
text-decoration:none; |
|
font-size:100%; |
|
font-weight:bold; |
|
} |
} |
.LC_ContentBoxSpecial |
|
{ |
ul.LC_TabContent { |
border: solid 1px $lg_border_color; |
min-height:20px; |
} |
} |
.LC_PopUp |
|
{ |
ul.LC_TabContent li { |
padding:10px; |
vertical-align:middle; |
border-left:solid 1px $lg_border_color; |
padding: 0 16px 0 10px; |
border-top:solid 1px $lg_border_color; |
background-color:$tabbg; |
border-bottom:outset 1px $lg_border_color; |
border-bottom:solid 1px $lg_border_color; |
border-right:outset 1px $lg_border_color; |
border-right: solid 1px $font; |
display:none; |
} |
position:absolute; |
|
right:0; |
ul.LC_TabContent .right { |
background-color:white; |
float:right; |
z-index:5; |
} |
|
|
|
ul.LC_TabContent li a, |
|
ul.LC_TabContent li { |
|
color:rgb(47,47,47); |
|
text-decoration:none; |
|
font-size:95%; |
|
font-weight:bold; |
|
min-height:20px; |
|
} |
|
|
|
ul.LC_TabContent li a:hover, |
|
ul.LC_TabContent li a:focus { |
|
color: $button_hover; |
|
background:none; |
|
outline:none; |
|
} |
|
|
|
ul.LC_TabContent li:hover { |
|
color: $button_hover; |
|
cursor:pointer; |
|
} |
|
|
|
ul.LC_TabContent li.active { |
|
color: $font; |
|
background:#FFFFFF url(/adm/lonIcons/open.gif) no-repeat scroll right center; |
|
border-bottom:solid 1px #FFFFFF; |
|
cursor: default; |
|
} |
|
|
|
ul.LC_TabContent li.active a { |
|
color:$font; |
|
background:#FFFFFF; |
|
outline: none; |
|
} |
|
#maincoursedoc { |
|
clear:both; |
|
} |
|
|
|
ul.LC_TabContentBigger { |
|
display:block; |
|
list-style:none; |
|
padding: 0; |
|
} |
|
|
|
ul.LC_TabContentBigger li { |
|
vertical-align:bottom; |
|
height: 30px; |
|
font-size:110%; |
|
font-weight:bold; |
|
color: #737373; |
|
} |
|
|
|
ul.LC_TabContentBigger li.active { |
|
position: relative; |
|
top: 1px; |
|
} |
|
|
|
ul.LC_TabContentBigger li a { |
|
background:url('/adm/lonIcons/tabbgleft.gif') left bottom no-repeat; |
|
height: 30px; |
|
line-height: 30px; |
|
text-align: center; |
|
display: block; |
|
text-decoration: none; |
|
outline: none; |
|
} |
|
|
|
ul.LC_TabContentBigger li.active a { |
|
background:url('/adm/lonIcons/tabbgleft.gif') left top no-repeat; |
|
color:$font; |
|
} |
|
|
|
ul.LC_TabContentBigger li b { |
|
background: url('/adm/lonIcons/tabbgright.gif') no-repeat right bottom; |
|
display: block; |
|
float: left; |
|
padding: 0 30px; |
|
border-bottom: 1px solid $lg_border_color; |
|
} |
|
|
|
ul.LC_TabContentBigger li:hover b { |
|
color:$button_hover; |
|
} |
|
|
|
ul.LC_TabContentBigger li.active b { |
|
background:url('/adm/lonIcons/tabbgright.gif') right top no-repeat; |
|
color:$font; |
|
border: 0; |
|
cursor:default; |
|
} |
|
|
|
|
|
ul.LC_CourseBreadcrumbs { |
|
background: $sidebg; |
|
line-height: 32px; |
|
padding-left: 10px; |
|
margin: 0 0 10px 0; |
|
list-style-position: inside; |
|
|
|
} |
|
|
|
ol#LC_MenuBreadcrumbs, |
|
ol#LC_PathBreadcrumbs { |
|
padding-left: 10px; |
|
margin: 0; |
|
height: 2.5em; /* equal to #LC_breadcrumbs line-height */ |
|
} |
|
|
|
ol#LC_MenuBreadcrumbs li, |
|
ol#LC_PathBreadcrumbs li, |
|
ul.LC_CourseBreadcrumbs li { |
|
display: inline; |
|
white-space: normal; |
|
} |
|
|
|
ol#LC_MenuBreadcrumbs li a, |
|
ul.LC_CourseBreadcrumbs li a { |
|
text-decoration: none; |
|
font-size:90%; |
|
} |
|
|
|
ol#LC_MenuBreadcrumbs h1 { |
|
display: inline; |
|
font-size: 90%; |
|
line-height: 2.5em; |
|
margin: 0; |
|
padding: 0; |
|
} |
|
|
|
ol#LC_PathBreadcrumbs li a { |
|
text-decoration:none; |
|
font-size:100%; |
|
font-weight:bold; |
|
} |
|
|
|
.LC_Box { |
|
border: solid 1px $lg_border_color; |
|
padding: 0 10px 10px 10px; |
|
} |
|
|
|
.LC_AboutMe_Image { |
|
float:left; |
|
margin-right:10px; |
|
} |
|
|
|
.LC_Clear_AboutMe_Image { |
|
clear:left; |
} |
} |
|
|
dl.LC_ListStyleClean dt { |
dl.LC_ListStyleClean dt { |
padding-right: 5px; |
padding-right: 5px; |
display: table-header-group; |
display: table-header-group; |
} |
} |
|
|
dl.LC_ListStyleClean dd { |
dl.LC_ListStyleClean dd { |
display: table-row; |
display: table-row; |
} |
} |
|
|
.LC_ListStyleClean, |
.LC_ListStyleClean, |
.LC_ListStyleSimple, |
.LC_ListStyleSimple, |
.LC_ListStyleNormal, |
.LC_ListStyleNormal, |
.LC_ListStyleNormal_Border, |
.LC_ListStyleSpecial { |
.LC_ListStyleSpecial |
/* display:block; */ |
{ |
list-style-position: inside; |
/*display:block; */ |
list-style-type: none; |
list-style-position: inside; |
overflow: hidden; |
list-style-type: none; |
padding: 0; |
overflow: hidden; |
|
padding: 0px; |
|
} |
} |
|
|
.LC_ListStyleSimple li, |
.LC_ListStyleSimple li, |
Line 5716 dl.LC_ListStyleClean dd {
|
Line 6327 dl.LC_ListStyleClean dd {
|
.LC_ListStyleNormal li, |
.LC_ListStyleNormal li, |
.LC_ListStyleNormal dd, |
.LC_ListStyleNormal dd, |
.LC_ListStyleSpecial li, |
.LC_ListStyleSpecial li, |
.LC_ListStyleSpecial dd |
.LC_ListStyleSpecial dd { |
{ |
margin: 0; |
margin: 0px; |
padding: 5px 5px 5px 10px; |
padding: 5px 5px 5px 10px; |
clear: both; |
clear: both; |
|
} |
} |
|
|
.LC_ListStyleClean li, |
.LC_ListStyleClean li, |
.LC_ListStyleClean dd { |
.LC_ListStyleClean dd { |
padding-top: 0px; |
padding-top: 0; |
padding-bottom: 0px; |
padding-bottom: 0; |
} |
} |
|
|
.LC_ListStyleSimple dd, |
.LC_ListStyleSimple dd, |
.LC_ListStyleSimple li{ |
.LC_ListStyleSimple li { |
border-bottom: solid 1px $lg_border_color; |
border-bottom: solid 1px $lg_border_color; |
} |
} |
|
|
.LC_ListStyleSpecial li, |
.LC_ListStyleSpecial li, |
.LC_ListStyleSpecial dd { |
.LC_ListStyleSpecial dd { |
list-style-type: none; |
list-style-type: none; |
background-color: RGB(220, 220, 220); |
background-color: RGB(220, 220, 220); |
margin-bottom: 4px; |
margin-bottom: 4px; |
} |
} |
|
|
table.LC_SimpleTable { |
table.LC_SimpleTable { |
margin:5px; |
margin:5px; |
border:solid 1px $lg_border_color; |
border:solid 1px $lg_border_color; |
} |
} |
|
|
table.LC_SimpleTable tr { |
table.LC_SimpleTable tr { |
padding:0px; |
padding: 0; |
border:solid 1px $lg_border_color; |
border:solid 1px $lg_border_color; |
} |
} |
table.LC_SimpleTable thead{ |
|
background:rgb(220,220,220); |
table.LC_SimpleTable thead { |
|
background:rgb(220,220,220); |
} |
} |
|
|
div.LC_columnSection { |
div.LC_columnSection { |
display: block; |
display: block; |
clear: both; |
clear: both; |
overflow: hidden; |
overflow: hidden; |
margin:0px; |
margin: 0; |
} |
} |
|
|
div.LC_columnSection>* { |
div.LC_columnSection>* { |
float: left; |
float: left; |
margin: 10px 20px 10px 0px; |
margin: 10px 20px 10px 0; |
overflow:hidden; |
overflow:hidden; |
} |
} |
div.LC_columnSection > .LC_ContentBox, |
|
div.LC_columnSection > .LC_ContentBoxSpecial |
table em { |
{ |
font-weight: bold; |
width: 400px; |
font-style: normal; |
} |
} |
|
|
.ContentBoxSpecialTemplate |
table.LC_tableBrowseRes, |
{ |
table.LC_tableOfContent { |
border: solid 1px $lg_border_color; |
border:none; |
|
border-spacing: 1px; |
|
padding: 3px; |
|
background-color: #FFFFFF; |
|
font-size: 90%; |
} |
} |
.ContentBoxTemplate { |
|
padding:10px; |
table.LC_tableOfContent { |
|
border-collapse: collapse; |
} |
} |
|
|
div.LC_columnSection > .ContentBoxTemplate, |
table.LC_tableBrowseRes a, |
div.LC_columnSection > .ContentBoxSpecialTemplate |
table.LC_tableOfContent a { |
{ |
background-color: transparent; |
width: 600px; |
text-decoration: none; |
|
} |
|
|
|
table.LC_tableOfContent img { |
|
border: none; |
|
height: 1.3em; |
|
vertical-align: text-bottom; |
|
margin-right: 0.3em; |
} |
} |
|
|
.clear{ |
a#LC_content_toolbar_firsthomework { |
clear: both; |
background-image:url(/res/adm/pages/open-first-problem.gif); |
line-height: 0px; |
|
font-size: 0px; |
|
height: 0px; |
|
} |
} |
|
|
.LC_loginpage_container { |
a#LC_content_toolbar_everything { |
text-align:left; |
background-image:url(/res/adm/pages/show-all.gif); |
margin : 0 auto; |
|
width:65%; |
|
padding: 10px; |
|
height: auto; |
|
background-color:#FFFFFF; |
|
border:1px solid #CCCCCC; |
|
} |
} |
|
|
|
a#LC_content_toolbar_uncompleted { |
|
background-image:url(/res/adm/pages/show-incomplete-problems.gif); |
|
} |
|
|
.LC_loginpage_loginContainer { |
#LC_content_toolbar_clearbubbles { |
float:left; |
background-image:url(/res/adm/pages/mark-discussionentries-read.gif); |
width: 182px; |
|
border:1px solid #CCCCCC; |
|
background-color:$loginbg; |
|
} |
} |
|
|
.LC_loginpage_loginContainer h2{ |
a#LC_content_toolbar_changefolder { |
margin-top:0; |
background : url(/res/adm/pages/close-all-folders.gif) top center ; |
display:block; |
|
background:$bgcol; |
|
color:$textcol; |
|
padding-left:5px; |
|
} |
} |
.LC_loginpage_loginInfo { |
|
margin-left:20px; |
a#LC_content_toolbar_changefolder_toggled { |
float:left; |
background-image:url(/res/adm/pages/open-all-folders.gif); |
width:30%; |
|
border:1px solid #CCCCCC; |
|
padding:10px; |
|
} |
} |
|
|
.LC_loginpage_loginDomain { |
ul#LC_toolbar li a:hover { |
margin-right:20px; |
background-position: bottom center; |
width:20%; |
|
float:left; |
|
padding:10px; |
|
} |
} |
|
|
.LC_loginpage_space { |
ul#LC_toolbar { |
clear:both; |
padding: 0; |
margin-bottom:20px; |
margin: 2px; |
border-bottom: 1px solid #CCCCCC; |
list-style:none; |
|
position:relative; |
|
background-color:white; |
} |
} |
|
|
.LC_loginpage_fieldset{ |
ul#LC_toolbar li { |
border: 1px solid #CCCCCC; |
border:1px solid white; |
margin: 0 auto; |
padding: 0; |
|
margin: 0; |
|
float: left; |
|
display:inline; |
|
vertical-align:middle; |
} |
} |
|
|
.LC_loginpage_legend{ |
|
padding: 2px; |
a.LC_toolbarItem { |
margin: 0px; |
display:block; |
font-size:14px; |
padding: 0; |
font-weight:bold; |
margin: 0; |
|
height: 32px; |
|
width: 32px; |
|
color:white; |
|
border: none; |
|
background-repeat:no-repeat; |
|
background-color:transparent; |
|
} |
|
|
|
ul.LC_funclist { |
|
margin: 0; |
|
padding: 0.5em 1em 0.5em 0; |
|
} |
|
|
|
ul.LC_funclist > li:first-child { |
|
font-weight:bold; |
|
margin-left:0.8em; |
|
} |
|
|
|
ul.LC_funclist + ul.LC_funclist { |
|
/* |
|
left border as a seperator if we have more than |
|
one list |
|
*/ |
|
border-left: 1px solid $sidebg; |
|
/* |
|
this hides the left border behind the border of the |
|
outer box if element is wrapped to the next 'line' |
|
*/ |
|
margin-left: -1px; |
|
} |
|
|
|
ul.LC_funclist li { |
|
display: inline; |
|
white-space: nowrap; |
|
margin: 0 0 0 25px; |
|
line-height: 150%; |
|
} |
|
|
|
.ui-accordion .LC_advanced_toggle { |
|
float: right; |
|
font-size: 90%; |
|
padding: 0px 4px |
} |
} |
|
|
|
.LC_hidden { |
|
display: none; |
|
} |
|
|
END |
END |
} |
} |
Line 5904 sub headtag {
|
Line 6558 sub headtag {
|
if (!$args->{'frameset'}) { |
if (!$args->{'frameset'}) { |
$result .= &Apache::lonhtmlcommon::htmlareaheaders(); |
$result .= &Apache::lonhtmlcommon::htmlareaheaders(); |
} |
} |
if ($args->{'force_register'}) { |
if ($args->{'force_register'} && $env{'request.noversionuri'} !~ m{^/res/adm/pages/}) { |
$result .= &Apache::lonmenu::registerurl(1); |
$result .= Apache::lonxml::display_title(); |
} |
} |
if (!$args->{'no_nav_bar'} |
if (!$args->{'no_nav_bar'} |
&& !$args->{'only_body'} |
&& !$args->{'only_body'} |
Line 5931 ADDMETA
|
Line 6585 ADDMETA
|
$result .= '<title> LON-CAPA '.$title.'</title>' |
$result .= '<title> LON-CAPA '.$title.'</title>' |
.'<link rel="stylesheet" type="text/css" href="'.$url.'" />' |
.'<link rel="stylesheet" type="text/css" href="'.$url.'" />' |
.$head_extra; |
.$head_extra; |
return $result; |
return $result.'</head>'; |
} |
} |
|
|
=pod |
=pod |
Line 5966 Inputs: none
|
Line 6620 Inputs: none
|
sub xml_begin { |
sub xml_begin { |
my $output=''; |
my $output=''; |
|
|
if ($env{'internal.start_page'}==1) { |
|
&Apache::lonhtmlcommon::init_htmlareafields(); |
|
} |
|
|
|
if ($env{'browser.mathml'}) { |
if ($env{'browser.mathml'}) { |
$output='<?xml version="1.0"?>' |
$output='<?xml version="1.0"?>' |
#.'<?xml-stylesheet type="text/css" href="/adm/MathML/mathml.css"?>'."\n" |
#.'<?xml-stylesheet type="text/css" href="/adm/MathML/mathml.css"?>'."\n" |
Line 5980 sub xml_begin {
|
Line 6630 sub xml_begin {
|
.'<html xmlns:math="http://www.w3.org/1998/Math/MathML" ' |
.'<html xmlns:math="http://www.w3.org/1998/Math/MathML" ' |
.'xmlns="http://www.w3.org/1999/xhtml">'; |
.'xmlns="http://www.w3.org/1999/xhtml">'; |
} else { |
} else { |
$output='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>'; |
$output='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' |
|
.'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">'; |
} |
} |
return $output; |
return $output; |
} |
} |
|
|
=pod |
=pod |
|
|
=item * &endheadtag() |
|
|
|
Returns a uniform </head> for LON-CAPA web pages. |
|
|
|
Inputs: none |
|
|
|
=cut |
|
|
|
sub endheadtag { |
|
return '</head>'; |
|
} |
|
|
|
=pod |
|
|
|
=item * &head() |
|
|
|
Returns a uniform complete <head>..</head> section for LON-CAPA web pages. |
|
|
|
Inputs: |
|
|
|
=over 4 |
|
|
|
$title - optional title for the page |
|
|
|
$head_extra - optional extra HTML to put inside the <head> |
|
|
|
=back |
|
|
|
=cut |
|
|
|
sub head { |
|
my ($title,$head_extra,$args) = @_; |
|
return &headtag($title,$head_extra,$args).&endheadtag(); |
|
} |
|
|
|
=pod |
|
|
|
=item * &start_page() |
=item * &start_page() |
|
|
Returns a complete <html> .. <body> section for LON-CAPA web pages. |
Returns a complete <html> .. <body> section for LON-CAPA web pages. |
Line 6042 $args - additional optional args support
|
Line 6656 $args - additional optional args support
|
|
|
only_body -> is true will set &bodytag() onlybodytag |
only_body -> is true will set &bodytag() onlybodytag |
arg on |
arg on |
no_nav_bar -> is true will set &bodytag() notopbar arg on |
no_nav_bar -> is true will set &bodytag() no_nav_bar arg on |
add_entries -> additional attributes to add to the <body> |
add_entries -> additional attributes to add to the <body> |
domain -> force to color decorate a page for a |
domain -> force to color decorate a page for a |
specific domain |
specific domain |
Line 6056 $args - additional optional args support
|
Line 6670 $args - additional optional args support
|
a html attribute |
a html attribute |
force_register -> if is true will turn on the &bodytag() |
force_register -> if is true will turn on the &bodytag() |
$forcereg arg |
$forcereg arg |
body_title -> alternate text to use instead of $title |
|
in the title box that appears, this text |
|
is not auto translated like the $title is |
|
frameset -> if true will start with a <frameset> |
frameset -> if true will start with a <frameset> |
rather than <body> |
rather than <body> |
no_title -> if true the title bar won't be shown |
|
skip_phases -> hash ref of |
skip_phases -> hash ref of |
head -> skip the <html><head> generation |
head -> skip the <html><head> generation |
body -> skip all <body> generation |
body -> skip all <body> generation |
no_inline_link -> if true and in remote mode, don't show the |
|
'Switch To Inline Menu' link |
|
no_auto_mt_title -> prevent &mt()ing the title arg |
no_auto_mt_title -> prevent &mt()ing the title arg |
inherit_jsmath -> when creating popup window in a page, |
inherit_jsmath -> when creating popup window in a page, |
should it have jsmath forced on by the |
should it have jsmath forced on by the |
current page |
current page |
|
bread_crumbs -> Array containing breadcrumbs |
|
bread_crumbs_components -> if exists show it as headline else show only the breadcrumbs |
|
|
=back |
=back |
|
|
Line 6081 $args - additional optional args support
|
Line 6691 $args - additional optional args support
|
sub start_page { |
sub start_page { |
my ($title,$head_extra,$args) = @_; |
my ($title,$head_extra,$args) = @_; |
#&Apache::lonnet::logthis("start_page ".join(':',caller(0))); |
#&Apache::lonnet::logthis("start_page ".join(':',caller(0))); |
|
#SD |
|
#I don't see why we copy certain elements of %$args to %head_args |
|
#head args is passed to headtag() and this routine only reads those |
|
#keys that are needed. There doesn't happen any writes or any processing |
|
#of other keys. |
|
#proposal: just pass $args to headtag instead of \%head_args and delete |
|
#marked lines |
|
#<- MARK |
my %head_args; |
my %head_args; |
foreach my $arg ('redirect','force_register','domain','function', |
foreach my $arg ('redirect','force_register','domain','function', |
'bgcolor','frameset','no_nav_bar','only_body', |
'bgcolor','frameset','no_nav_bar','only_body', |
Line 6089 sub start_page {
|
Line 6707 sub start_page {
|
$head_args{$arg} = $args->{$arg}; |
$head_args{$arg} = $args->{$arg}; |
} |
} |
} |
} |
|
#MARK -> |
|
|
$env{'internal.start_page'}++; |
$env{'internal.start_page'}++; |
my $result; |
my $result; |
|
|
if (! exists($args->{'skip_phases'}{'head'}) ) { |
if (! exists($args->{'skip_phases'}{'head'}) ) { |
$result.= |
$result .= |
&xml_begin(). |
&xml_begin() . &headtag($title,$head_extra,\%head_args); |
&headtag($title,$head_extra,\%head_args).&endheadtag(); |
#replace prev line by |
|
# &xml_begin() . &headtag($title, $head_extra, $args); |
} |
} |
|
|
if (! exists($args->{'skip_phases'}{'body'}) ) { |
if (! exists($args->{'skip_phases'}{'body'}) ) { |
Line 6103 sub start_page {
|
Line 6724 sub start_page {
|
my $attr_string = &make_attr_string($args->{'force_register'}, |
my $attr_string = &make_attr_string($args->{'force_register'}, |
$args->{'add_entries'}); |
$args->{'add_entries'}); |
$result .= "\n<frameset $attr_string>\n"; |
$result .= "\n<frameset $attr_string>\n"; |
} else { |
} else { |
$result .= |
$result .= |
&bodytag($title, |
&bodytag($title, |
$args->{'function'}, $args->{'add_entries'}, |
$args->{'function'}, $args->{'add_entries'}, |
$args->{'only_body'}, $args->{'domain'}, |
$args->{'only_body'}, $args->{'domain'}, |
$args->{'force_register'}, $args->{'body_title'}, |
$args->{'force_register'}, $args->{'no_nav_bar'}, |
$args->{'no_nav_bar'}, $args->{'bgcolor'}, |
$args->{'bgcolor'}, $args); |
$args->{'no_title'}, $args->{'no_inline_link'}, |
} |
$args); |
|
} |
|
} |
} |
|
|
if ($args->{'js_ready'}) { |
if ($args->{'js_ready'}) { |
Line 6122 sub start_page {
|
Line 6741 sub start_page {
|
$result = &html_encode($result); |
$result = &html_encode($result); |
} |
} |
|
|
if (exists($args->{'bread_crumbs'})) { |
# Preparation for new and consistent functionlist at top of screen |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
# if ($args->{'functionlist'}) { |
if (ref($args->{'bread_crumbs'}) eq 'ARRAY') { |
# $result .= &build_functionlist(); |
foreach my $crumb (@{$args->{'bread_crumbs'}}){ |
#} |
&Apache::lonhtmlcommon::add_breadcrumb($crumb); |
|
} |
# Don't add anything more if only_body wanted or in const space |
} |
return $result if $args->{'only_body'} |
$result .= &Apache::lonhtmlcommon::breadcrumbs(); |
|| $env{'request.state'} eq 'construct'; |
} |
|
|
#Breadcrumbs |
|
if (exists($args->{'bread_crumbs'}) or exists($args->{'bread_crumbs_component'})) { |
|
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
|
#if any br links exists, add them to the breadcrumbs |
|
if (exists($args->{'bread_crumbs'}) and ref($args->{'bread_crumbs'}) eq 'ARRAY') { |
|
foreach my $crumb (@{$args->{'bread_crumbs'}}){ |
|
&Apache::lonhtmlcommon::add_breadcrumb($crumb); |
|
} |
|
} |
|
|
|
#if bread_crumbs_component exists show it as headline else show only the breadcrumbs |
|
if(exists($args->{'bread_crumbs_component'})){ |
|
$result .= &Apache::lonhtmlcommon::breadcrumbs($args->{'bread_crumbs_component'}); |
|
}else{ |
|
$result .= &Apache::lonhtmlcommon::breadcrumbs(); |
|
} |
|
} |
return $result; |
return $result; |
} |
} |
|
|
|
|
=pod |
|
|
|
=item * &head() |
|
|
|
Returns a complete </body></html> section for LON-CAPA web pages. |
|
|
|
Inputs: $args - additional optional args supported are: |
|
js_ready -> return a string ready for being used in |
|
a javascript writeln |
|
html_encode -> return a string ready for being used in |
|
a html attribute |
|
frameset -> if true will start with a <frameset> |
|
rather than <body> |
|
dicsussion -> if true will get discussion from |
|
lonxml::xmlend |
|
(you can pass the target and parser arguments |
|
through optional 'target' and 'parser' args |
|
to this routine) |
|
|
|
=cut |
|
|
|
sub end_page { |
sub end_page { |
my ($args) = @_; |
my ($args) = @_; |
$env{'internal.end_page'}++; |
$env{'internal.end_page'}++; |
Line 6246 sub simple_error_page {
|
Line 6859 sub simple_error_page {
|
|
|
{ |
{ |
my @row_count; |
my @row_count; |
|
|
|
sub start_data_table_count { |
|
unshift(@row_count, 0); |
|
return; |
|
} |
|
|
|
sub end_data_table_count { |
|
shift(@row_count); |
|
return; |
|
} |
|
|
sub start_data_table { |
sub start_data_table { |
my ($add_class) = @_; |
my ($add_class) = @_; |
my $css_class = (join(' ','LC_data_table',$add_class)); |
my $css_class = (join(' ','LC_data_table',$add_class)); |
unshift(@row_count,0); |
&start_data_table_count(); |
return '<table class="'.$css_class.'">'."\n"; |
return '<table class="'.$css_class.'">'."\n"; |
} |
} |
|
|
sub end_data_table { |
sub end_data_table { |
shift(@row_count); |
&end_data_table_count(); |
return '</table>'."\n";; |
return '</table>'."\n";; |
} |
} |
|
|
sub start_data_table_row { |
sub start_data_table_row { |
my ($add_class) = @_; |
my ($add_class, $id) = @_; |
$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";; |
$id = (' id="'.$id.'"') unless ($id eq ''); |
|
return '<tr class="'.$css_class.'"'.$id.'>'."\n"; |
} |
} |
|
|
sub continue_data_table_row { |
sub continue_data_table_row { |
my ($add_class) = @_; |
my ($add_class, $id) = @_; |
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";; |
$id = (' id="'.$id.'"') unless ($id eq ''); |
|
return '<tr class="'.$css_class.'"'.$id.'>'."\n"; |
} |
} |
|
|
sub end_data_table_row { |
sub end_data_table_row { |
Line 6293 sub simple_error_page {
|
Line 6919 sub simple_error_page {
|
sub end_data_table_header_row { |
sub end_data_table_header_row { |
return '</tr>'."\n";; |
return '</tr>'."\n";; |
} |
} |
|
|
|
sub data_table_caption { |
|
my $caption = shift; |
|
return "<caption class=\"LC_caption\">$caption</caption>"; |
|
} |
} |
} |
|
|
=pod |
=pod |
Line 6359 Returns either 'student','coordinator','
|
Line 6990 Returns either 'student','coordinator','
|
|
|
############################################### |
############################################### |
sub get_users_function { |
sub get_users_function { |
my $function = 'student'; |
my $function = 'norole'; |
if ($env{'request.role'}=~/^(cc|in|ta|ep)/) { |
if ($env{'request.role'}=~/^(st)/) { |
|
$function='student'; |
|
} |
|
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)/) { |
$function='admin'; |
$function='admin'; |
} |
} |
if (($env{'request.role'}=~/^(au|ca)/) || |
if (($env{'request.role'}=~/^(au|ca|aa)/) || |
($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) { |
($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) { |
$function='author'; |
$function='author'; |
} |
} |
Line 6377 sub get_users_function {
|
Line 7011 sub get_users_function {
|
|
|
=pod |
=pod |
|
|
|
=item * &show_course() |
|
|
|
Used by lonmenu.pm and lonroles.pm to determine whether to use the word |
|
'Courses' or 'Roles' in inline navigation and on screen displaying user's roles. |
|
|
|
Inputs: |
|
None |
|
|
|
Outputs: |
|
Scalar: 1 if 'Course' to be used, 0 otherwise. |
|
|
|
=cut |
|
|
|
############################################### |
|
sub show_course { |
|
my $course = !$env{'user.adv'}; |
|
if (!$env{'user.adv'}) { |
|
foreach my $env (keys(%env)) { |
|
next if ($env !~ m/^user\.priv\./); |
|
if ($env !~ m/^user\.priv\.(?:st|cm)/) { |
|
$course = 0; |
|
last; |
|
} |
|
} |
|
} |
|
return $course; |
|
} |
|
|
|
############################################### |
|
|
|
=pod |
|
|
=item * &check_user_status() |
=item * &check_user_status() |
|
|
Determines current status of supplied role for a |
Determines current status of supplied role for a |
Line 6399 sub check_user_status {
|
Line 7065 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 6880 If the user's status includes multiple t
|
Line 7546 If the user's status includes multiple t
|
the largest default quota which applies to the user determines the |
the largest default quota which applies to the user determines the |
default quota returned. |
default quota returned. |
|
|
|
=back |
|
|
=cut |
=cut |
|
|
############################################### |
############################################### |
Line 6892 sub default_quota {
|
Line 7560 sub default_quota {
|
['quotas'],$udom); |
['quotas'],$udom); |
if (ref($quotahash{'quotas'}) eq 'HASH') { |
if (ref($quotahash{'quotas'}) eq 'HASH') { |
if ($inststatus ne '') { |
if ($inststatus ne '') { |
my @statuses = split(/:/,$inststatus); |
my @statuses = map { &unescape($_); } split(/:/,$inststatus); |
foreach my $item (@statuses) { |
foreach my $item (@statuses) { |
if (ref($quotahash{'quotas'}{'defaultquota'}) eq 'HASH') { |
if (ref($quotahash{'quotas'}{'defaultquota'}) eq 'HASH') { |
if ($quotahash{'quotas'}{'defaultquota'}{$item} ne '') { |
if ($quotahash{'quotas'}{'defaultquota'}{$item} ne '') { |
Line 7028 sub user_picker {
|
Line 7696 sub user_picker {
|
# loncreateuser::print_user_query_page() |
# loncreateuser::print_user_query_page() |
# has been completed. |
# has been completed. |
next if ($option eq 'alc'); |
next if ($option eq 'alc'); |
|
next if (($option eq 'crs') && ($env{'form.form'} eq 'requestcrs')); |
next if ($option eq 'crs' && !$env{'request.course.id'}); |
next if ($option eq 'crs' && !$env{'request.course.id'}); |
if ($curr_selected{'srchin'} eq $option) { |
if ($curr_selected{'srchin'} eq $option) { |
$srchinsel .= ' |
$srchinsel .= ' |
Line 7071 sub user_picker {
|
Line 7740 sub user_picker {
|
if ($cancreate) { |
if ($cancreate) { |
$new_user_create = '<p> <input type="submit" name="forcenew" value="'.&HTML::Entities::encode(&mt('Make new user "[_1]"',$srchterm),'<>&"').'" onclick="javascript:setSearch(\'1\','.$caller.');" /> </p>'; |
$new_user_create = '<p> <input type="submit" name="forcenew" value="'.&HTML::Entities::encode(&mt('Make new user "[_1]"',$srchterm),'<>&"').'" onclick="javascript:setSearch(\'1\','.$caller.');" /> </p>'; |
} else { |
} else { |
my $helplink = ' href="javascript:helpMenu('."'display'".')"'; |
my $helplink = 'javascript:helpMenu('."'display'".')'; |
my %usertypetext = ( |
my %usertypetext = ( |
official => 'institutional', |
official => 'institutional', |
unofficial => 'non-institutional', |
unofficial => 'non-institutional', |
); |
); |
$new_user_create = '<br /><span class="LC_warning">'.&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.").' '.&mt('Contact the <a[_1]>helpdesk</a> for assistance.',$helplink).'</span><br /><br />'; |
$new_user_create = '<p class="LC_warning">' |
|
.&mt("You are not authorized to create new $usertypetext{$usertype} users in this domain.") |
|
.' ' |
|
.&mt('Please contact the [_1]helpdesk[_2] for assistance.' |
|
,'<a href="'.$helplink.'">','</a>') |
|
.'</p><br />'; |
} |
} |
} |
} |
} |
} |
Line 7113 ENDSCRIPT
|
Line 7787 ENDSCRIPT
|
|
|
my $output = <<"END_BLOCK"; |
my $output = <<"END_BLOCK"; |
<script type="text/javascript"> |
<script type="text/javascript"> |
|
// <![CDATA[ |
function validateEntry(callingForm) { |
function validateEntry(callingForm) { |
|
|
var checkok = 1; |
var checkok = 1; |
Line 7181 function validateEntry(callingForm) {
|
Line 7856 function validateEntry(callingForm) {
|
|
|
$newuserscript |
$newuserscript |
|
|
|
// ]]> |
</script> |
</script> |
|
|
$new_user_create |
$new_user_create |
|
|
<table> |
|
<tr> |
|
<td>$lt{'doma'}:</td> |
|
<td>$domform</td> |
|
</td> |
|
</tr> |
|
<tr> |
|
<td>$lt{'usr'}:</td> |
|
<td>$srchbysel |
|
$srchtypesel |
|
<input type="text" size="15" name="srchterm" value="$srchterm" /> |
|
$srchinsel |
|
</td> |
|
</tr> |
|
</table> |
|
<br /> |
|
END_BLOCK |
END_BLOCK |
|
|
|
$output .= &Apache::lonhtmlcommon::start_pick_box(). |
|
&Apache::lonhtmlcommon::row_title($lt{'doma'}). |
|
$domform. |
|
&Apache::lonhtmlcommon::row_closure(). |
|
&Apache::lonhtmlcommon::row_title($lt{'usr'}). |
|
$srchbysel. |
|
$srchtypesel. |
|
'<input type="text" size="15" name="srchterm" value="'.$srchterm.'" />'. |
|
$srchinsel. |
|
&Apache::lonhtmlcommon::row_closure(1). |
|
&Apache::lonhtmlcommon::end_pick_box(). |
|
'<br />'; |
return $output; |
return $output; |
} |
} |
|
|
Line 7358 sub personal_data_fieldtitles {
|
Line 8030 sub personal_data_fieldtitles {
|
middlename => 'Middle Name', |
middlename => 'Middle Name', |
generation => 'Generation', |
generation => 'Generation', |
gen => 'Generation', |
gen => 'Generation', |
|
inststatus => 'Affiliation', |
); |
); |
return %fieldtitles; |
return %fieldtitles; |
} |
} |
Line 7425 sub get_institutional_codes {
|
Line 8098 sub get_institutional_codes {
|
return; |
return; |
} |
} |
|
|
|
sub get_standard_codeitems { |
|
return ('Year','Semester','Department','Number','Section'); |
|
} |
|
|
=pod |
=pod |
|
|
|
=head1 Slot Helpers |
|
|
|
=over 4 |
|
|
|
=item * sorted_slots() |
|
|
|
Sorts an array of slot names in order of slot start time (earliest first). |
|
|
|
Inputs: |
|
|
|
=over 4 |
|
|
|
slotsarr - Reference to array of unsorted slot names. |
|
|
|
slots - Reference to hash of hash, where outer hash keys are slot names. |
|
|
|
=back |
|
|
|
Returns: |
|
|
|
=over 4 |
|
|
|
sorted - An array of slot names sorted by the start time of the slot. |
|
|
=back |
=back |
|
|
|
=back |
|
|
|
=cut |
|
|
|
|
|
sub sorted_slots { |
|
my ($slotsarr,$slots) = @_; |
|
my @sorted; |
|
if ((ref($slotsarr) eq 'ARRAY') && (ref($slots) eq 'HASH')) { |
|
@sorted = |
|
sort { |
|
if (ref($slots->{$a}) && ref($slots->{$b})) { |
|
return $slots->{$a}{'starttime'} <=> $slots->{$b}{'starttime'} |
|
} |
|
if (ref($slots->{$a})) { return -1;} |
|
if (ref($slots->{$b})) { return 1;} |
|
return 0; |
|
} @{$slotsarr}; |
|
} |
|
return @sorted; |
|
} |
|
|
|
|
|
=pod |
|
|
=head1 HTTP Helpers |
=head1 HTTP Helpers |
|
|
=over 4 |
=over 4 |
Line 8025 sub csv_print_samples {
|
Line 8751 sub csv_print_samples {
|
$r->print(&mt('Samples').'<br />'.&start_data_table(). |
$r->print(&mt('Samples').'<br />'.&start_data_table(). |
&start_data_table_header_row()); |
&start_data_table_header_row()); |
foreach my $sample (sort({$a <=> $b} keys(%{ $samples->[0] }))) { |
foreach my $sample (sort({$a <=> $b} keys(%{ $samples->[0] }))) { |
$r->print('<th>'.&mt('Column [_1]',($sample+1)).'</th>'); } |
$r->print('<th>'.&mt('Column [_1]',($sample+1)).'</th>'); } |
$r->print(&end_data_table_header_row()); |
$r->print(&end_data_table_header_row()); |
foreach my $hash (@$samples) { |
foreach my $hash (@$samples) { |
$r->print(&start_data_table_row()); |
$r->print(&start_data_table_row()); |
Line 8069 sub csv_print_select_table {
|
Line 8795 sub csv_print_select_table {
|
my ($value,$display,$defaultcol)=@{ $array_ref }; |
my ($value,$display,$defaultcol)=@{ $array_ref }; |
$r->print(&start_data_table_row().'<td>'.$display.'</td>'); |
$r->print(&start_data_table_row().'<td>'.$display.'</td>'); |
|
|
$r->print('<td><select name=f'.$i. |
$r->print('<td><select name="f'.$i.'"'. |
' onchange="javascript:flip(this.form,'.$i.');">'); |
' onchange="javascript:flip(this.form,'.$i.');">'); |
$r->print('<option value="none"></option>'); |
$r->print('<option value="none"></option>'); |
foreach my $sample (sort({$a <=> $b} keys(%{ $samples->[0] }))) { |
foreach my $sample (sort({$a <=> $b} keys(%{ $samples->[0] }))) { |
Line 8723 sub restore_settings {
|
Line 9449 sub restore_settings {
|
|
|
=item * &build_recipient_list() |
=item * &build_recipient_list() |
|
|
Build recipient lists for three types of e-mail: |
Build recipient lists for five types of e-mail: |
(a) Error Reports, (b) Package Updates, (c) Help requests, generated by |
(a) Error Reports, (b) Package Updates, (c) lonstatus warnings/errors |
lonerrorhandler.pm, CHECKRPMS and lonsupportreq.pm respectively. |
(d) Help requests, (e) Course requests needing approval, generated by |
|
lonerrorhandler.pm, CHECKRPMS, loncron, lonsupportreq.pm and |
|
loncoursequeueadmin.pm respectively. |
|
|
Inputs: |
Inputs: |
defmail (scalar - email address of default recipient), |
defmail (scalar - email address of default recipient), |
Line 8749 sub build_recipient_list {
|
Line 9477 sub build_recipient_list {
|
my %domconfig = |
my %domconfig = |
&Apache::lonnet::get_dom('configuration',['contacts'],$defdom); |
&Apache::lonnet::get_dom('configuration',['contacts'],$defdom); |
if (ref($domconfig{'contacts'}) eq 'HASH') { |
if (ref($domconfig{'contacts'}) eq 'HASH') { |
if (ref($domconfig{'contacts'}{$mailing}) eq 'HASH') { |
if (exists($domconfig{'contacts'}{$mailing})) { |
my @contacts = ('adminemail','supportemail'); |
if (ref($domconfig{'contacts'}{$mailing}) eq 'HASH') { |
foreach my $item (@contacts) { |
my @contacts = ('adminemail','supportemail'); |
if ($domconfig{'contacts'}{$mailing}{$item}) { |
foreach my $item (@contacts) { |
my $addr = $domconfig{'contacts'}{$item}; |
if ($domconfig{'contacts'}{$mailing}{$item}) { |
if (!grep(/^\Q$addr\E$/,@recipients)) { |
my $addr = $domconfig{'contacts'}{$item}; |
push(@recipients,$addr); |
if (!grep(/^\Q$addr\E$/,@recipients)) { |
|
push(@recipients,$addr); |
|
} |
} |
} |
|
$otheremails = $domconfig{'contacts'}{$mailing}{'others'}; |
} |
} |
$otheremails = $domconfig{'contacts'}{$mailing}{'others'}; |
|
} |
} |
|
} elsif ($origmail ne '') { |
|
push(@recipients,$origmail); |
} |
} |
} elsif ($origmail ne '') { |
} elsif ($origmail ne '') { |
push(@recipients,$origmail); |
push(@recipients,$origmail); |
Line 8891 sub extract_categories {
|
Line 9623 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 9003 cathash - reference to hash of categorie
|
Line 9737 cathash - reference to hash of categorie
|
|
|
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 9017 sub assign_categories_table {
|
Line 9753 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) { |
if (grep(/^\Q$item\E$/,@currcategories)) { |
if (grep(/^\Q$item\E$/,@currcategories)) { |
$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 9096 sub assign_category_rows {
|
Line 9845 sub assign_category_rows {
|
if (ref($currcategories) eq 'ARRAY') { |
if (ref($currcategories) eq 'ARRAY') { |
if (@{$currcategories} > 0) { |
if (@{$currcategories} > 0) { |
if (grep(/^\Q$item\E$/,@{$currcategories})) { |
if (grep(/^\Q$item\E$/,@{$currcategories})) { |
$checked = ' checked="checked" '; |
$checked = ' checked="checked"'; |
} |
} |
} |
} |
} |
} |
Line 9289 sub check_clone {
|
Line 10038 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->{'crstype'}); |
|
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->{'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'}); |
|
} 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 ($env{'request.role.domain'} eq $args->{'clonedomain'}) { |
if ($args->{'crstype'} 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'}) && |
|
(&Apache::lonnet::allowed('ccc',$env{'request.role.domain'}))) { |
$can_clone = 1; |
$can_clone = 1; |
} else { |
} else { |
my %clonehash = &Apache::lonnet::get('environment',['cloners'], |
my %clonehash = &Apache::lonnet::get('environment',['cloners'], |
Line 9305 sub check_clone {
|
Line 10068 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->{'crstype'} 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 { |
} elsif (&Apache::lonnet::is_course_owner($args->{'clonedomain'},$args->{'clonecourse'},$args->{'ccuname'},$args->{'ccdomain'})) { |
$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'}); |
$can_clone = 1; |
|
} else { |
|
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'}); |
|
} 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 9322 sub check_clone {
|
Line 10095 sub check_clone {
|
} |
} |
|
|
sub construct_course { |
sub construct_course { |
my ($args,$logmsg,$courseid,$crsudom,$crsunum,$udom,$uname,$context) = @_; |
my ($args,$logmsg,$courseid,$crsudom,$crsunum,$udom,$uname,$context,$cnum,$category) = @_; |
my $outcome; |
my $outcome; |
my $linefeed = '<br />'."\n"; |
my $linefeed = '<br />'."\n"; |
if ($context eq 'auto') { |
if ($context eq 'auto') { |
Line 9360 sub construct_course {
|
Line 10133 sub construct_course {
|
$args->{'crscode'}, |
$args->{'crscode'}, |
$args->{'ccuname'}.':'. |
$args->{'ccuname'}.':'. |
$args->{'ccdomain'}, |
$args->{'ccdomain'}, |
$args->{'crstype'}); |
$args->{'crstype'}, |
|
$cnum,$context,$category); |
|
|
# Note: The testing routines depend on this being output; see |
# Note: The testing routines depend on this being output; see |
# Utils::Course. This needs to at least be output as a comment |
# Utils::Course. This needs to at least be output as a comment |
# if anyone ever decides to not show this, and Utils::Course::new |
# if anyone ever decides to not show this, and Utils::Course::new |
# will need to be suitably modified. |
# will need to be suitably modified. |
$outcome .= &mt('New LON-CAPA [_1] ID: [_2]',$crstype,$$courseid).$linefeed; |
$outcome .= &mt('New LON-CAPA [_1] ID: [_2]',$crstype,$$courseid).$linefeed; |
|
if ($$courseid =~ /^error:/) { |
|
return (0,$outcome); |
|
} |
|
|
# |
# |
# Check if created correctly |
# Check if created correctly |
# |
# |
($$crsudom,$$crsunum)= &LONCAPA::split_courseid($$courseid); |
($$crsudom,$$crsunum)= &LONCAPA::split_courseid($$courseid); |
my $crsuhome=&Apache::lonnet::homeserver($$crsunum,$$crsudom); |
my $crsuhome=&Apache::lonnet::homeserver($$crsunum,$$crsudom); |
|
if ($crsuhome eq 'no_host') { |
|
$outcome .= &mt('Course creation failed, unrecognized course home server.').$linefeed; |
|
return (0,$outcome); |
|
} |
$outcome .= &mt('Created on').': '.$crsuhome.$linefeed; |
$outcome .= &mt('Created on').': '.$crsuhome.$linefeed; |
|
|
# |
# |
Line 9390 sub construct_course {
|
Line 10172 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 |
Line 9636 sub construct_course {
|
Line 10422 sub construct_course {
|
$title=&mt('Syllabus'); |
$title=&mt('Syllabus'); |
$url='/public/'.$$crsudom.'/'.$$crsunum.'/syllabus'; |
$url='/public/'.$$crsudom.'/'.$$crsunum.'/syllabus'; |
} else { |
} else { |
$title=&mt('Navigate Contents'); |
$title=&mt('Table of Contents'); |
$url='/adm/navmaps'; |
$url='/adm/navmaps'; |
} |
} |
|
|
Line 9653 sub construct_course {
|
Line 10439 sub construct_course {
|
############################################################ |
############################################################ |
############################################################ |
############################################################ |
|
|
|
#SD |
|
# only Community and Course, or anything else? |
sub course_type { |
sub course_type { |
my ($cid) = @_; |
my ($cid) = @_; |
if (!defined($cid)) { |
if (!defined($cid)) { |
Line 9669 sub group_term {
|
Line 10457 sub group_term {
|
my $crstype = &course_type(); |
my $crstype = &course_type(); |
my %names = ( |
my %names = ( |
'Course' => 'group', |
'Course' => 'group', |
'Group' => 'team', |
'Community' => 'group', |
); |
); |
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]); |
Line 9733 sub escape_url {
|
Line 10531 sub escape_url {
|
return join('/',@urlslices).'/'.$lastitem; |
return join('/',@urlslices).'/'.$lastitem; |
} |
} |
|
|
# -------------------------------------------------------- Initliaze user login |
sub compare_arrays { |
|
my ($arrayref1,$arrayref2) = @_; |
|
my (@difference,%count); |
|
@difference = (); |
|
%count = (); |
|
if ((ref($arrayref1) eq 'ARRAY') && (ref($arrayref2) eq 'ARRAY')) { |
|
foreach my $element (@{$arrayref1}, @{$arrayref2}) { $count{$element}++; } |
|
foreach my $element (keys(%count)) { |
|
if ($count{$element} == 1) { |
|
push(@difference,$element); |
|
} |
|
} |
|
} |
|
return @difference; |
|
} |
|
|
|
# -------------------------------------------------------- Initialize user login |
sub init_user_environment { |
sub init_user_environment { |
my ($r, $username, $domain, $authhost, $form, $args) = @_; |
my ($r, $username, $domain, $authhost, $form, $args) = @_; |
my $lonids=$Apache::lonnet::perlvar{'lonIDsDir'}; |
my $lonids=$Apache::lonnet::perlvar{'lonIDsDir'}; |
Line 9787 sub init_user_environment {
|
Line 10601 sub init_user_environment {
|
my ($httpbrowser,$clientbrowser,$clientversion,$clientmathml, |
my ($httpbrowser,$clientbrowser,$clientversion,$clientmathml, |
$clientunicode,$clientos) = &decode_user_agent($r); |
$clientunicode,$clientos) = &decode_user_agent($r); |
|
|
# -------------------------------------- Any accessibility options to remember? |
|
if (($form->{'interface'}) && ($form->{'remember'} eq 'true')) { |
|
foreach my $option ('imagesuppress','appletsuppress', |
|
'embedsuppress','fontenhance','blackwhite') { |
|
if ($form->{$option} eq 'true') { |
|
&Apache::lonnet::put('environment',{$option => 'on'}, |
|
$domain,$username); |
|
} else { |
|
&Apache::lonnet::del('environment',[$option], |
|
$domain,$username); |
|
} |
|
} |
|
} |
|
# ------------------------------------------------------------- Get environment |
# ------------------------------------------------------------- Get environment |
|
|
my %userenv = &Apache::lonnet::dump('environment',$domain,$username); |
my %userenv = &Apache::lonnet::dump('environment',$domain,$username); |
my ($tmp) = keys(%userenv); |
my ($tmp) = keys(%userenv); |
if ($tmp !~ /^(con_lost|error|no_such_host)/i) { |
if ($tmp !~ /^(con_lost|error|no_such_host)/i) { |
# default remote control to off |
|
if ($userenv{'remote'} ne 'on') { $userenv{'remote'} = 'off'; } |
|
} else { |
} else { |
undef(%userenv); |
undef(%userenv); |
} |
} |
if (($userenv{'interface'}) && (!$form->{'interface'})) { |
if (($userenv{'interface'}) && (!$form->{'interface'})) { |
$form->{'interface'}=$userenv{'interface'}; |
$form->{'interface'}=$userenv{'interface'}; |
} |
} |
$env{'environment.remote'}=$userenv{'remote'}; |
|
if ($userenv{'texengine'} eq 'ttm') { $clientmathml=1; } |
if ($userenv{'texengine'} eq 'ttm') { $clientmathml=1; } |
|
|
# --------------- Do not trust query string to be put directly into environment |
# --------------- Do not trust query string to be put directly into environment |
foreach my $option ('imagesuppress','appletsuppress', |
foreach my $option ('interface','localpath','localres') { |
'embedsuppress','fontenhance','blackwhite', |
$form->{$option}=~s/[\n\r\=]//gs; |
'interface','localpath','localres') { |
|
$form->{$option}=~s/[\n\r\=]//gs; |
|
} |
} |
# --------------------------------------------------------- Write first profile |
# --------------------------------------------------------- Write first profile |
|
|
Line 9847 sub init_user_environment {
|
Line 10643 sub init_user_environment {
|
$initial_env{"browser.localres"} = $form->{'localres'}; |
$initial_env{"browser.localres"} = $form->{'localres'}; |
} |
} |
|
|
if ($public) { |
|
$initial_env{"environment.remote"} = "off"; |
|
} |
|
if ($form->{'interface'}) { |
if ($form->{'interface'}) { |
$form->{'interface'}=~s/\W//gs; |
$form->{'interface'}=~s/\W//gs; |
$initial_env{"browser.interface"} = $form->{'interface'}; |
$initial_env{"browser.interface"} = $form->{'interface'}; |
$env{'browser.interface'}=$form->{'interface'}; |
$env{'browser.interface'}=$form->{'interface'}; |
foreach my $option ('imagesuppress','appletsuppress', |
|
'embedsuppress','fontenhance','blackwhite') { |
|
if (($form->{$option} eq 'true') || |
|
($userenv{$option} eq 'on')) { |
|
$initial_env{"browser.$option"} = "on"; |
|
} |
|
} |
|
} |
} |
|
|
|
my %is_adv = ( is_adv => $env{'user.adv'} ); |
|
my %domdef = &Apache::lonnet::get_domain_defaults($domain); |
|
|
foreach my $tool ('aboutme','blog','portfolio') { |
foreach my $tool ('aboutme','blog','portfolio') { |
$userenv{'availabletools.'.$tool} = |
$userenv{'availabletools.'.$tool} = |
&Apache::lonnet::usertools_access($username,$domain,$tool,'reload'); |
&Apache::lonnet::usertools_access($username,$domain,$tool,'reload', |
|
undef,\%userenv,\%domdef,\%is_adv); |
|
} |
|
|
|
foreach my $crstype ('official','unofficial','community') { |
|
$userenv{'canrequest.'.$crstype} = |
|
&Apache::lonnet::usertools_access($username,$domain,$crstype, |
|
'reload','requestcourses', |
|
\%userenv,\%domdef,\%is_adv); |
} |
} |
|
|
$env{'user.environment'} = "$lonids/$cookie.id"; |
$env{'user.environment'} = "$lonids/$cookie.id"; |