version 1.102, 2007/05/08 17:23:10
|
version 1.217, 2016/01/27 00:24:09
|
Line 36 use strict;
|
Line 36 use strict;
|
use LONCAPA; |
use LONCAPA; |
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
use Apache::File; |
use Apache::File; |
use Crypt::DES; |
|
use DynaLoader; # for Crypt::DES version |
|
use Apache::loncommon(); |
use Apache::loncommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonhtmlcommon(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Apache::lonnet; |
use Apache::lonnet; |
|
use LONCAPA::lonauthcgi(); |
use LONCAPA(); |
use LONCAPA(); |
|
|
# |
|
# Write lonnet::passwd to do the call below. |
|
# Use: |
|
# my $answer=reply("encrypt:passwd:$udom:$uname:$upass",$tryserver); |
|
# |
|
################################################## |
|
# password associated functions # |
|
################################################## |
|
sub des_keys { |
|
# Make a new key for DES encryption. |
|
# Each key has two parts which are returned separately. |
|
# Please note: Each key must be passed through the &hex function |
|
# before it is output to the web browser. The hex versions cannot |
|
# be used to decrypt. |
|
my @hexstr=('0','1','2','3','4','5','6','7', |
|
'8','9','a','b','c','d','e','f'); |
|
my $lkey=''; |
|
for (0..7) { |
|
$lkey.=$hexstr[rand(15)]; |
|
} |
|
my $ukey=''; |
|
for (0..7) { |
|
$ukey.=$hexstr[rand(15)]; |
|
} |
|
return ($lkey,$ukey); |
|
} |
|
|
|
sub des_decrypt { |
|
my ($key,$cyphertext) = @_; |
|
my $keybin=pack("H16",$key); |
|
my $cypher; |
|
if ($Crypt::DES::VERSION>=2.03) { |
|
$cypher=new Crypt::DES $keybin; |
|
} else { |
|
$cypher=new DES $keybin; |
|
} |
|
my $plaintext= |
|
$cypher->decrypt(unpack("a8",pack("H16",substr($cyphertext,0,16)))); |
|
$plaintext.= |
|
$cypher->decrypt(unpack("a8",pack("H16",substr($cyphertext,16,16)))); |
|
$plaintext=substr($plaintext,1,ord(substr($plaintext,0,1)) ); |
|
return $plaintext; |
|
} |
|
|
|
################################################################ |
################################################################ |
# Handler subroutines # |
# Handler subroutines # |
################################################################ |
################################################################ |
Line 98 sub des_decrypt {
|
Line 53 sub des_decrypt {
|
|
|
sub wysiwygchanger { |
sub wysiwygchanger { |
my $r = shift; |
my $r = shift; |
|
Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=changewysiwyg', |
|
text => 'Change WYSIWYG Preferences'}); |
|
$r->print(Apache::loncommon::start_page('Content Display Settings')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change WYSIWYG Preferences')); |
|
|
my %userenv = &Apache::lonnet::get |
my %userenv = &Apache::lonnet::get |
('environment',['wysiwygeditor']); |
('environment',['wysiwygeditor']); |
my $onselect='checked="checked"'; |
my $onselect='checked="checked"'; |
Line 108 sub wysiwygchanger {
|
Line 69 sub wysiwygchanger {
|
} |
} |
my $switchoff=&mt('Disable WYSIWYG editor'); |
my $switchoff=&mt('Disable WYSIWYG editor'); |
my $switchon=&mt('Enable WYSIWYG editor'); |
my $switchon=&mt('Enable WYSIWYG editor'); |
|
my $warning=''; |
|
if ($env{'user.adv'}) { |
|
$warning.='<p class="LC_warning">'.&mt("The WYSIWYG editor only supports simple HTML and is in many cases unsuited for advanced authoring. In a number of cases, it may destroy advanced authoring involving LaTeX and script function calls.")."</p>"; |
|
} |
$r->print(<<ENDLSCREEN); |
$r->print(<<ENDLSCREEN); |
<form name="prefs" action="/adm/preferences" method="post"> |
<form name="prefs" action="/adm/preferences" method="post"> |
<input type="hidden" name="action" value="set_wysiwyg" /> |
<input type="hidden" name="action" value="set_wysiwyg" /> |
|
$warning |
<br /> |
<br /> |
<label><input type="radio" name="wysiwyg" value="off" $onselect /> $switchoff</label><br /> |
<label><input type="radio" name="wysiwyg" value="off" $onselect /> $switchoff</label><br /> |
<label><input type="radio" name="wysiwyg" value="on" $offselect /> $switchon</label> |
<label><input type="radio" name="wysiwyg" value="on" $offselect /> $switchon</label> |
ENDLSCREEN |
ENDLSCREEN |
$r->print('<br /><input type="submit" value="'.&mt('Change').'" />'); |
$r->print('<br /><input type="submit" value="'.&mt('Save').'" />'); |
} |
} |
|
|
|
|
Line 123 sub verify_and_change_wysiwyg {
|
Line 89 sub verify_and_change_wysiwyg {
|
my $r = shift; |
my $r = shift; |
my $newsetting=$env{'form.wysiwyg'}; |
my $newsetting=$env{'form.wysiwyg'}; |
&Apache::lonnet::put('environment',{'wysiwygeditor' => $newsetting}); |
&Apache::lonnet::put('environment',{'wysiwygeditor' => $newsetting}); |
&Apache::lonnet::appenv('environment.wysiwygeditor' => $newsetting); |
&Apache::lonnet::appenv({'environment.wysiwygeditor' => $newsetting}); |
$r->print('<p>'.&mt('Setting WYSIWYG editor to:').' '.&mt($newsetting).'</p>'); |
my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('WYSIWYG Editor').'</i>','<tt>'.&mt($newsetting).'</tt>')); |
|
$message=&Apache::loncommon::confirmwrapper($message); |
|
&print_main_menu($r,$message); |
} |
} |
|
|
################################################################ |
################################################################ |
Line 132 sub verify_and_change_wysiwyg {
|
Line 100 sub verify_and_change_wysiwyg {
|
################################################################ |
################################################################ |
sub languagechanger { |
sub languagechanger { |
my $r = shift; |
my $r = shift; |
my $user = $env{'user.name'}; |
|
my $domain = $env{'user.domain'}; |
Apache::lonhtmlcommon::add_breadcrumb( |
my %userenv = &Apache::lonnet::get |
{ href => '/adm/preferences?action=changelanguages', |
('environment',['languages']); |
text => 'Change Language'}); |
|
$r->print(Apache::loncommon::start_page('Content Display Settings')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change Language')); |
|
my %userenv = &Apache::lonnet::get('environment',['languages']); |
my $language=$userenv{'languages'}; |
my $language=$userenv{'languages'}; |
|
|
my $pref=&mt('Preferred language'); |
$r->print( |
my %langchoices=('' => 'No language preference'); |
'<form name="prefs" action="/adm/preferences" method="post">'."\n". |
foreach (&Apache::loncommon::languageids()) { |
'<input type="hidden" name="action" value="verify_and_change_languages" />'. |
if (&Apache::loncommon::supportedlanguagecode($_)) { |
'<br /><span class="LC_nobreak">'.&mt('Preferred language').': '. |
$langchoices{&Apache::loncommon::supportedlanguagecode($_)} |
&Apache::loncommon::select_language('language',$language,1).'</span>'."\n". |
= &Apache::loncommon::plainlanguagedescription($_); |
'<br /><input type="submit" value="'.&mt('Save').'" /></form>' |
} |
); |
} |
|
my $selectionbox=&Apache::loncommon::select_form($language,'language', |
|
%langchoices); |
|
$r->print(<<ENDLSCREEN); |
|
<form name="prefs" action="/adm/preferences" method="post"> |
|
<input type="hidden" name="action" value="verify_and_change_languages" /> |
|
<br />$pref: $selectionbox |
|
ENDLSCREEN |
|
$r->print('<br /><input type="submit" value="'.&mt('Change').'" />'); |
|
} |
} |
|
|
|
|
Line 167 sub verify_and_change_languages {
|
Line 129 sub verify_and_change_languages {
|
my $message=''; |
my $message=''; |
if ($newlanguage) { |
if ($newlanguage) { |
&Apache::lonnet::put('environment',{'languages' => $newlanguage}); |
&Apache::lonnet::put('environment',{'languages' => $newlanguage}); |
&Apache::lonnet::appenv('environment.languages' => $newlanguage); |
&Apache::lonnet::appenv({'environment.languages' => $newlanguage}); |
$message='Set new preferred languages to '.$newlanguage; |
$message=&Apache::lonhtmlcommon::confirm_success( |
|
&mt('Set [_1] to [_2]', |
|
'<i>'.&mt('Preferred language').'</i>', |
|
'<tt>"'.$newlanguage.'"</tt>.')) |
|
.'<br />' |
|
.&mt('The change will become active on the next page.'); |
} else { |
} else { |
&Apache::lonnet::del('environment',['languages']); |
&Apache::lonnet::del('environment',['languages']); |
&Apache::lonnet::delenv('environment\.languages'); |
&Apache::lonnet::delenv('environment.languages'); |
$message='Reset preferred language'; |
$message=&Apache::lonhtmlcommon::confirm_success(&mt('Reset [_1]','<i>'.&mt('Preferred language').'</i>')); |
} |
} |
$r->print(<<ENDVCSCREEN); |
$message=&Apache::loncommon::confirmwrapper($message); |
$message |
&Apache::loncommon::flush_langs_cache($user,$domain); |
ENDVCSCREEN |
&print_main_menu($r, $message); |
} |
} |
|
|
################################################################ |
################################################################ |
Line 184 ENDVCSCREEN
|
Line 151 ENDVCSCREEN
|
################################################################ |
################################################################ |
sub texenginechanger { |
sub texenginechanger { |
my $r = shift; |
my $r = shift; |
|
Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=changetexenginepref', |
|
text => 'Math display settings'}); |
|
$r->print(Apache::loncommon::start_page('Content Display Settings')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Math display settings')); |
my $user = $env{'user.name'}; |
my $user = $env{'user.name'}; |
my $domain = $env{'user.domain'}; |
my $domain = $env{'user.domain'}; |
my %userenv = &Apache::lonnet::get('environment',['texengine']); |
my %userenv = &Apache::lonnet::get('environment',['texengine']); |
my $texengine=$userenv{'texengine'}; |
my $texengine=$userenv{'texengine'}; |
|
|
my $pref=&mt('Preferred method to display Math'); |
|
my %mathchoices=('' => 'Default', |
my %mathchoices=('' => 'Default', |
'tth' => 'TeX to HTML', |
'tth' => 'tth (TeX to HTML)', |
#'ttm' => 'TeX to MathML', |
#'ttm' => 'TeX to MathML', |
'jsMath' => 'jsMath', |
'jsMath' => 'jsMath', |
'mimetex' => 'Convert to Images' |
'MathJax' => 'MathJax', |
|
'mimetex' => 'mimetex (Convert to Images)', |
|
'raw' => 'Raw (Screen Reader)' |
); |
); |
my $selectionbox=&Apache::loncommon::select_form($texengine,'texengine', |
%mathchoices = &Apache::lonlocal::texthash(%mathchoices); |
%mathchoices); |
my $selectionbox= |
|
&Apache::loncommon::select_form( |
|
$texengine, |
|
'texengine', |
|
\%mathchoices); |
|
my $MathJax_start=&Apache::lontexconvert::MathJax_header(); |
my $jsMath_start=&Apache::lontexconvert::jsMath_header(); |
my $jsMath_start=&Apache::lontexconvert::jsMath_header(); |
my $change=&mt('Change'); |
my %lt=&Apache::lonlocal::texthash( |
$r->print(<<ENDLSCREEN); |
'headline' => 'Change how math is displayed', |
<br /> |
'preftxt' => 'Preferred method to display math', |
|
'change' => 'Save', |
|
'exmpl' => 'Examples', |
|
'mathjax' => 'MathJax:', |
|
'mathjaxinfo' => 'MathJax provides rendered equations whose source code can be extracted in TeX and MathML formats by right clicking the equation.', |
|
'jsmath' => 'jsMath:', |
|
'tth' => 'tth (TeX to HTML):', |
|
'mimetex' => 'mimetex (Convert to Images):', |
|
); |
|
|
|
my $jsMathWarning='<p>' |
|
.'<div class="LC_warning">' |
|
.&mt("It looks like you don't have the TeX math fonts installed.") |
|
.'</div>' |
|
.'<div>' |
|
.&mt('The jsMath example on this page may not look right without them. ' |
|
.'The [_1]jsMath Home Page[_2] has information on how to download the ' |
|
.'needed fonts. In the meantime, jsMath will do the best it can ' |
|
.'with the fonts you have, but it may not be pretty and some equations ' |
|
.'may not be rendered correctly.' |
|
,'<a href="http://www.math.union.edu/locate/jsMath/" target="_blank">' |
|
,'</a>') |
|
.'</div>' |
|
.'</p>'; |
|
|
|
$r->print(<<ENDLSCREEN); |
|
<h2>$lt{'headline'}</h2> |
<form name="prefs" action="/adm/preferences" method="post"> |
<form name="prefs" action="/adm/preferences" method="post"> |
<input type="hidden" name="action" value="verify_and_change_texengine" /> |
<input type="hidden" name="action" value="verify_and_change_texengine" /> |
<p>$pref: $selectionbox</p> |
<p> |
<p><input type="submit" value="$change" /></p> |
$lt{'preftxt'}: $selectionbox |
|
<br /> |
|
<input type="submit" value="$lt{'change'}" /> |
|
</p> |
</form> |
</form> |
Examples: |
<br /> |
<p> TeX to HTML <br /> |
<hr /> |
<iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=tth" width="400" hieght="200"></iframe> |
$lt{'exmpl'} |
|
|
|
<h3>$lt{'mathjax'}</h3> |
|
</script> |
|
<iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=MathJax" width="400" height="150"></iframe> |
</p> |
</p> |
<p>jsMath <br /> |
<p> |
|
$lt{'mathjaxinfo'} |
|
</p> |
|
|
|
<h3>$lt{'jsmath'}</h3> |
|
<p> |
$jsMath_start |
$jsMath_start |
<script type="text/javascript"> |
<script type="text/javascript" language="JavaScript"> |
if (jsMath.nofonts == 1) { |
if (jsMath.nofonts == 1) { |
document.writeln |
document.writeln($jsMathWarning); |
('<center><div style="padding: 10; border-style: solid; border-width:3;' |
|
+' border-color: #DD0000; background-color: #FFF8F8; width: 75%; text-align: left">' |
|
+'<small><font color="#AA0000"><b>Warning:</b> ' |
|
+'It looks like you don\\\'t have the TeX math fonts installed. ' |
|
+'The jsMath example on this page may not look right without them. ' |
|
+'The <a href="http://www.math.union.edu/locate/jsMath/" target="_blank"> ' |
|
+'jsMath Home Page</a> has information on how to download the ' |
|
+'needed fonts. In the meantime, jsMath will do the best it can ' |
|
+'with the fonts you have, but it may not be pretty and some equations ' |
|
+'may not be rendered correctly. ' |
|
+'</font></small></div></center>'); |
|
} |
} |
|
|
</script> |
</script> |
<iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=jsMath" width="400" hieght="200"></iframe> |
<iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=jsMath" width="400" height="150"></iframe> |
|
</p> |
|
|
|
<h3>$lt{'mimetex'}</h3> |
|
<p> |
|
<iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=mimetex" width="400" height="150"></iframe> |
</p> |
</p> |
<p> Convert to Images <br /> |
|
<br /> |
<h3>$lt{'tth'}</h3> |
<iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=mimetex" width="400" hieght="200"></iframe> |
<p> |
|
<iframe src="/res/adm/pages/math_example.tex?inhibitmenu=yes&texengine=tth" width="400" height="150"></iframe> |
</p> |
</p> |
ENDLSCREEN |
ENDLSCREEN |
if ($env{'environment.texengine'} ne 'jsMath') { |
if ($env{'environment.texengine'} ne 'jsMath') { |
$r->print('<script type="text/javascript">jsMath.Process()</script>'); |
$r->print('<script type="text/javascript" language="JavaScript">jsMath.Process()</script>'); |
} |
} |
} |
} |
|
|
Line 252 sub verify_and_change_texengine {
|
Line 262 sub verify_and_change_texengine {
|
my $newtexengine = $env{'form.texengine'}; |
my $newtexengine = $env{'form.texengine'}; |
$newtexengine=~s/[^\-\w]//g; |
$newtexengine=~s/[^\-\w]//g; |
if ($newtexengine eq 'ttm') { |
if ($newtexengine eq 'ttm') { |
&Apache::lonnet::appenv('browser.mathml' => 1); |
&Apache::lonnet::appenv({'browser.mathml' => 1}); |
} else { |
} else { |
if ($env{'environment.texengine'} eq 'ttm') { |
if ($env{'environment.texengine'} eq 'ttm') { |
&Apache::lonnet::appenv('browser.mathml' => 0); |
&Apache::lonnet::appenv({'browser.mathml' => 0}); |
} |
} |
} |
} |
my $message=''; |
my $message=''; |
if ($newtexengine) { |
if ($newtexengine) { |
&Apache::lonnet::put('environment',{'texengine' => $newtexengine}); |
&Apache::lonnet::put('environment',{'texengine' => $newtexengine}); |
&Apache::lonnet::appenv('environment.texengine' => $newtexengine); |
&Apache::lonnet::appenv({'environment.texengine' => $newtexengine}); |
$message='Set new preferred math display to '.$newtexengine; |
$message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Preferred method to display Math').'</i>','<tt>"'.$newtexengine.'"</tt>')); |
} else { |
} else { |
&Apache::lonnet::del('environment',['texengine']); |
&Apache::lonnet::del('environment',['texengine']); |
&Apache::lonnet::delenv('environment\.texengine'); |
&Apache::lonnet::delenv('environment.texengine'); |
$message='Reset preferred math display.'; |
$message=&Apache::lonhtmlcommon::confirm_success(&mt('Reset [_1]','<i>'.&mt('Preferred method to display Math').'</i>')); |
} |
} |
|
$message=&Apache::loncommon::confirmwrapper($message); |
|
&print_main_menu($r, $message); |
$r->print(<<ENDVCSCREEN); |
|
$message |
|
ENDVCSCREEN |
|
} |
} |
|
|
################################################################ |
################################################################ |
Line 286 sub rolesprefchanger {
|
Line 293 sub rolesprefchanger {
|
my $domain = $env{'user.domain'}; |
my $domain = $env{'user.domain'}; |
my %userenv = &Apache::lonnet::get |
my %userenv = &Apache::lonnet::get |
('environment',['recentroles','recentrolesn']); |
('environment',['recentroles','recentrolesn']); |
|
my $brtext = 'Change '.$role.' Page Pref'; |
|
my $brtitle; |
|
if ($env{'form.returnurl'} eq '/adm/roles') { |
|
$brtext = 'Configure Hotlist'; |
|
} else { |
|
$brtitle = $brtext; |
|
} |
|
Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=changerolespref', |
|
text => $brtext}); |
|
$r->print(Apache::loncommon::start_page('Content Display Settings')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs($brtitle)); |
my $hotlist_flag=$userenv{'recentroles'}; |
my $hotlist_flag=$userenv{'recentroles'}; |
my $hotlist_n=$userenv{'recentrolesn'}; |
my $hotlist_n=$userenv{'recentrolesn'}; |
my $checked; |
my ($checkedon,$checkedoff); |
if ($hotlist_flag) { |
if ($hotlist_flag) { |
$checked = 'checked="checked"'; |
$checkedon = 'checked="checked"'; |
|
} else { |
|
$checkedoff = 'checked="checked"'; |
} |
} |
|
|
if (!$hotlist_n) { $hotlist_n=3; } |
if (!$hotlist_n) { $hotlist_n=3; } |
Line 317 sub rolesprefchanger {
|
Line 338 sub rolesprefchanger {
|
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row(). |
&Apache::loncommon::start_data_table_header_row(). |
"<th>".&mt('Freeze '.$role)."</th>". |
"<th>".&mt('Freeze '.$role)."</th>". |
"<th>".&mt($role)."</td>". |
"<th>".&mt($role)."</th>". |
&Apache::loncommon::end_data_table_header_row(). |
&Apache::loncommon::end_data_table_header_row(). |
"\n"; |
"\n"; |
my $count; |
my $count; |
Line 325 sub rolesprefchanger {
|
Line 346 sub rolesprefchanger {
|
my $checked = ""; |
my $checked = ""; |
my $value = $recent_roles{$role_key}; |
my $value = $recent_roles{$role_key}; |
if ($frozen_roles{$role_key}) { |
if ($frozen_roles{$role_key}) { |
$checked = "checked=\"checked\""; |
$checked = ' checked="checked"'; |
} |
} |
$count++; |
$count++; |
$roles_check_list .= |
$roles_check_list .= |
&Apache::loncommon::start_data_table_row(). |
&Apache::loncommon::start_data_table_row(). |
'<td class="LC_table_cell_checkbox">'. |
'<td class="LC_table_cell_checkbox">'. |
"<input type=\"checkbox\" $checked name=\"freezeroles\"". |
"<input type=\"checkbox\"$checked name=\"freezeroles\"". |
" id=\"freezeroles$count\" value=\"$role_key\" /></td>". |
" id=\"freezeroles$count\" value=\"$role_key\" /></td>". |
"<td><label for=\"freezeroles$count\">". |
"<td><label for=\"freezeroles$count\">". |
"$role_text{$role_key}</label></td>". |
"$role_text{$role_key}</label></td>". |
Line 340 sub rolesprefchanger {
|
Line 361 sub rolesprefchanger {
|
$roles_check_list .= "</table>\n"; |
$roles_check_list .= "</table>\n"; |
} |
} |
|
|
|
my $actionurl = '/adm/preferences'; |
|
if ($env{'form.returnurl'} eq '/adm/roles') { |
|
$actionurl = '/adm/roles'; |
|
} |
|
$r->print('<h3>'.&mt('Recent Roles Hotlist').'</h3>'); |
|
unless ($checkedon) { |
|
$r->print(&mt('LON-CAPA users with several '.$lc_role.'s may wish to enable the Hotlist.').'<br />'); |
|
} |
$r->print(' |
$r->print(' |
<p>'.&mt('Some LON-CAPA users have a long list of '.$lc_role.'s. The Recent '.$role.'s Hotlist feature keeps track of the last N '.$lc_role.'s which have been visited and places a table of these at the top of the '.$lc_role.'s page. People with very few '.$lc_role.'s should leave this feature disabled.').' |
<form name="prefs" action="'.$actionurl.'" method="post"> |
</p> |
|
<form name="prefs" action="/adm/preferences" method="POST"> |
|
<input type="hidden" name="action" value="verify_and_change_rolespref" /> |
<input type="hidden" name="action" value="verify_and_change_rolespref" /> |
<br /><label>'.&mt('Enable Recent '.$role.'s Hotlist:').' |
<input type="hidden" name="returnurl" value="'.$env{'form.returnurl'}.'" /> |
<input type="checkbox" '.$checked.' name="recentroles" value="true" /></label> |
<div class="LC_left_float"><h4>'.&mt('Hotlist options').'</h4> |
<br />'.&mt('Number of '.$role.'s in Hotlist:').' |
<p>'. |
<select name="recentrolesn" size="1"> |
&mt('When enabled, the Hotlist keeps track of the last N '.$lc_role.'s visited.').'<br />'. |
'.$options.' |
&mt('Those N '.$lc_role.'s are then shown in a table at the top of the '.$lc_role.'s page.').'</p>'. |
</select> |
&Apache::lonhtmlcommon::start_pick_box(). |
<p>'.&mt('This list below can be used to <q>freeze</q> '.$lc_role.'s on your screen. Those marked as frozen will not be removed from the list, even if they have not been used recently.').' |
&Apache::lonhtmlcommon::row_title(&mt('Use Recent '.$role.'s Hotlist')). |
|
'<span class="LC_nobreak"> |
|
<label><input id="Hotliston" type="radio" '.$checkedon.' name="recentroles" value="1" />'.&mt('Yes').'</label>'. |
|
(' 'x2). |
|
'<label><input id="Hotlistoff" type="radio" '.$checkedoff.' name="recentroles" value="0" />'.&mt('No').'</label> |
|
</span>'. |
|
&Apache::lonhtmlcommon::row_closure(). |
|
&Apache::lonhtmlcommon::row_title('<label for="NumberOfRoles">'.&mt('Number of '.$role.'s in Hotlist').'</label>'). |
|
'<select name="recentrolesn" size="1" id ="NumberOfRoles">'. |
|
$options.' |
|
</select>'. |
|
&Apache::lonhtmlcommon::row_closure(1). |
|
&Apache::lonhtmlcommon::end_pick_box().' |
|
</div>'); |
|
if ($roles_check_list) { |
|
$r->print('<div class="LC_left_float"> |
|
<h4>'.&mt('Freeze Roles').'</h4> |
|
<p>'.&mt('The table below can be used to [_1]freeze[_2] '.$lc_role.'s in the Hotlist.','<q>','</q>').'<br />'. |
|
&mt('Those '.$lc_role.'s marked frozen will not be removed from the list, even if not recently used.').' |
</p> |
</p> |
'.$roles_check_list.' |
'.$roles_check_list.' |
<br /> |
</div>'); |
<input type="submit" value="'.&mt('Change').'" /> |
} else { |
|
$r->print('<br clear="all" />'. |
|
&mt('Once the Hotlist contains recently visited '.$lc_role.'s you can return to this page to also set frozen roles.')); |
|
} |
|
$r->print(' |
|
<br clear="all" /> |
|
<input type="submit" value="'.&mt('Save').'" /> |
</form>'); |
</form>'); |
} |
} |
|
|
Line 400 sub verify_and_change_rolespref {
|
Line 451 sub verify_and_change_rolespref {
|
my $message='<hr />'; |
my $message='<hr />'; |
if ($hotlist_flag) { |
if ($hotlist_flag) { |
&Apache::lonnet::put('environment',{'recentroles' => $hotlist_flag}); |
&Apache::lonnet::put('environment',{'recentroles' => $hotlist_flag}); |
&Apache::lonnet::appenv('environment.recentroles' => $hotlist_flag); |
&Apache::lonnet::appenv({'environment.recentroles' => $hotlist_flag}); |
$message=&mt('Recent '.$role.'s Hotlist is Enabled'); |
$message=&Apache::lonhtmlcommon::confirm_success(&mt('Recent '.$role.'s Hotlist is Enabled.')." ".&mt('Display [_1] Most Recent '.$role.'s.',$hotlist_n)); |
} else { |
} else { |
&Apache::lonnet::del('environment',['recentroles']); |
&Apache::lonnet::del('environment',['recentroles']); |
&Apache::lonnet::delenv('environment\.recentroles'); |
&Apache::lonnet::delenv('environment.recentroles'); |
$message=&mt('Recent '.$role.'s Hotlist is Disabled'); |
$message=&Apache::lonhtmlcommon::confirm_success(&mt('Recent '.$role.'s Hotlist is Disabled')); |
} |
} |
if ($hotlist_n) { |
if ($hotlist_n) { |
&Apache::lonnet::put('environment',{'recentrolesn' => $hotlist_n}); |
&Apache::lonnet::put('environment',{'recentrolesn' => $hotlist_n}); |
&Apache::lonnet::appenv('environment.recentrolesn' => $hotlist_n); |
&Apache::lonnet::appenv({'environment.recentrolesn' => $hotlist_n}); |
if ($hotlist_flag) { |
|
$message.="<br />". |
|
&mt('Display [_1] Most Recent '.$role.'s',$hotlist_n)."\n"; |
|
} |
|
} |
} |
|
|
# Get list of froze roles and list of recent roles |
# Get list of froze roles and list of recent roles |
Line 434 sub verify_and_change_rolespref {
|
Line 481 sub verify_and_change_rolespref {
|
# Unset any roles that were previously frozen but aren't in list |
# Unset any roles that were previously frozen but aren't in list |
foreach my $role_key (sort(keys(%recent_roles))) { |
foreach my $role_key (sort(keys(%recent_roles))) { |
if (($frozen_roles{$role_key}) && (!exists($freeze{$role_key}))) { |
if (($frozen_roles{$role_key}) && (!exists($freeze{$role_key}))) { |
$message .= "<br />".&mt('Unfreezing '.$role.': [_1]',$role_text{$role_key})."\n"; |
$message .= "<br />".&Apache::lonhtmlcommon::confirm_success(&mt('Unfreezing '.$role.': [_1]','<i>'.$role_text{$role_key}.'</i>')); |
&Apache::lonhtmlcommon::store_recent('roles',$role_key,' ',0); |
&Apache::lonhtmlcommon::store_recent('roles',$role_key,' ',0); |
} |
} |
} |
} |
Line 442 sub verify_and_change_rolespref {
|
Line 489 sub verify_and_change_rolespref {
|
# Freeze selected roles |
# Freeze selected roles |
foreach my $role_key (@freeze_list) { |
foreach my $role_key (@freeze_list) { |
if (!$frozen_roles{$role_key}) { |
if (!$frozen_roles{$role_key}) { |
$message .= "<br />".&mt('Freezing '.$role.': [_1]',$role_text{$role_key})."\n"; |
$message .= "<br />". |
|
&Apache::lonhtmlcommon::confirm_success(&mt('Freezing '.$role.': [_1]','<i>'.$role_text{$role_key}.'</i>')); |
&Apache::lonhtmlcommon::store_recent('roles', |
&Apache::lonhtmlcommon::store_recent('roles', |
$role_key,' ',1); |
$role_key,' ',1); |
} |
} |
} |
} |
$message .= "<hr /><br />\n"; |
$message=&Apache::loncommon::confirmwrapper($message); |
|
if ($env{'form.returnurl'} eq '/adm/roles') { |
$r->print(<<ENDRPSCREEN); |
return $message; |
$message |
} else { |
ENDRPSCREEN |
&print_main_menu($r, $message); |
|
} |
} |
} |
|
|
|
|
Line 467 sub screennamechanger {
|
Line 516 sub screennamechanger {
|
('environment',['screenname','nickname']); |
('environment',['screenname','nickname']); |
my $screenname=$userenv{'screenname'}; |
my $screenname=$userenv{'screenname'}; |
my $nickname=$userenv{'nickname'}; |
my $nickname=$userenv{'nickname'}; |
$r->print(<<ENDSCREEN); |
Apache::lonhtmlcommon::add_breadcrumb( |
<form name="prefs" action="/adm/preferences" method="post"> |
{ href => '/adm/preferences?action=changescreenname', |
<input type="hidden" name="action" value="verify_and_change_screenname" /> |
text => 'Change Screen Name'}); |
<br />New screenname (shown if you post anonymously): |
$r->print(Apache::loncommon::start_page('Personal Data')); |
<input type="text" size="20" value="$screenname" name="screenname" /> |
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change Screen Name')); |
<br />New nickname (shown if you post non-anonymously): |
$r->print('<p>' |
<input type="text" size="20" value="$nickname" name="nickname" /> |
.&mt('Change the name that is displayed in your posts.') |
<input type="submit" value="Change" /> |
.'</p>' |
</form> |
); |
ENDSCREEN |
$r->print('<form name="prefs" action="/adm/preferences" method="post">' |
|
.'<input type="hidden" name="action" value="verify_and_change_screenname" />' |
|
.&Apache::lonhtmlcommon::start_pick_box() |
|
.&Apache::lonhtmlcommon::row_title(&mt('Screenname').' '.&mt('(shown if you post anonymously)')) |
|
.'<input type="text" size="20" value="'.$screenname.'" name="screenname" />' |
|
.&Apache::lonhtmlcommon::row_closure() |
|
.&Apache::lonhtmlcommon::row_title(&mt('Nickname').' '.&mt('(shown if you post non-anonymously)')) |
|
.'<input type="text" size="20" value="'.$nickname.'" name="nickname" />' |
|
.&Apache::lonhtmlcommon::row_closure() |
|
.&Apache::lonhtmlcommon::row_title() |
|
.'<input type="submit" value="'.&mt('Save').'" />' |
|
.&Apache::lonhtmlcommon::row_closure(1) |
|
.&Apache::lonhtmlcommon::end_pick_box() |
|
.'</form>' |
|
); |
} |
} |
|
|
sub verify_and_change_screenname { |
sub verify_and_change_screenname { |
Line 489 sub verify_and_change_screenname {
|
Line 552 sub verify_and_change_screenname {
|
my $message=''; |
my $message=''; |
if ($newscreen) { |
if ($newscreen) { |
&Apache::lonnet::put('environment',{'screenname' => $newscreen}); |
&Apache::lonnet::put('environment',{'screenname' => $newscreen}); |
&Apache::lonnet::appenv('environment.screenname' => $newscreen); |
&Apache::lonnet::appenv({'environment.screenname' => $newscreen}); |
$message='Set new screenname to '.$newscreen; |
$message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Screenname').'</i>','<tt>"'.$newscreen.'"</tt>')); |
} else { |
} else { |
&Apache::lonnet::del('environment',['screenname']); |
&Apache::lonnet::del('environment',['screenname']); |
&Apache::lonnet::delenv('environment\.screenname'); |
&Apache::lonnet::delenv('environment.screenname'); |
$message='Reset screenname'; |
$message=&Apache::lonhtmlcommon::confirm_success(&mt('Reset [_1]','<i>'.&mt('Screenname').'</i>')); |
} |
} |
# Nickname |
# Nickname |
$message.='<br />'; |
$message.='<br />'; |
Line 502 sub verify_and_change_screenname {
|
Line 565 sub verify_and_change_screenname {
|
$newscreen=~s/[^ \w]//g; |
$newscreen=~s/[^ \w]//g; |
if ($newscreen) { |
if ($newscreen) { |
&Apache::lonnet::put('environment',{'nickname' => $newscreen}); |
&Apache::lonnet::put('environment',{'nickname' => $newscreen}); |
&Apache::lonnet::appenv('environment.nickname' => $newscreen); |
&Apache::lonnet::appenv({'environment.nickname' => $newscreen}); |
$message.='Set new nickname to '.$newscreen; |
$message.=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Nickname').'</i>','<tt>"'.$newscreen.'"</tt>')); |
} else { |
} else { |
&Apache::lonnet::del('environment',['nickname']); |
&Apache::lonnet::del('environment',['nickname']); |
&Apache::lonnet::delenv('environment\.nickname'); |
&Apache::lonnet::delenv('environment.nickname'); |
$message.='Reset nickname'; |
$message.=&Apache::lonhtmlcommon::confirm_success(&mt('Reset [_1]','<i>'.&mt('Nickname').'</i>')); |
} |
} |
&Apache::lonnet::devalidate_cache_new('namescache',$user.':'.$domain); |
&Apache::lonnet::devalidate_cache_new('namescache',$user.':'.$domain); |
$r->print(<<ENDVCSCREEN); |
$message=&Apache::loncommon::confirmwrapper($message); |
$message |
&print_main_menu($r, $message); |
ENDVCSCREEN |
|
} |
} |
|
|
################################################################ |
################################################################ |
Line 520 ENDVCSCREEN
|
Line 582 ENDVCSCREEN
|
################################################################ |
################################################################ |
sub iconchanger { |
sub iconchanger { |
my $r = shift; |
my $r = shift; |
|
&Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=changeicons', |
|
text => 'Change Menu Display'}); |
|
$r->print(Apache::loncommon::start_page('Page Display Settings')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change Menu Display')); |
|
|
my $user = $env{'user.name'}; |
my $user = $env{'user.name'}; |
my $domain = $env{'user.domain'}; |
my $domain = $env{'user.domain'}; |
my %userenv = &Apache::lonnet::get |
my %userenv = &Apache::lonnet::get('environment',['icons']); |
('environment',['icons']); |
|
my $iconic='checked="checked"'; |
my $iconic='checked="checked"'; |
my $classic=''; |
my ($classic,$onlyicon,$iconic_preview,$iconsonly_preview); |
my $onlyicon=''; |
|
if ($userenv{'icons'} eq 'classic') { |
if ($userenv{'icons'} eq 'classic') { |
$classic='checked="checked"'; |
$iconic=''; |
$iconic=''; |
$classic='<div class="LC_info">'. |
|
&mt('Your current selection: "Use buttons and text" is deprecated - it is recommended that you change this to "Use icons and text".').'</div>'; |
} |
} |
if ($userenv{'icons'} eq 'iconsonly') { |
if ($userenv{'icons'} eq 'iconsonly') { |
$onlyicon='checked="checked"'; |
$onlyicon='checked="checked"'; |
$iconic=''; |
$iconic=''; |
} |
} |
my $useicons=&mt('Use icons and text'); |
my $change=&mt('Save'); |
my $usebuttons=&mt('Use buttons and text'); |
my %lt = &icon_options(); |
my $useicononly=&mt('Use icons only'); |
my ($inlinetools,$toolsorder) = &icon_previews(); |
my $change=&mt('Change'); |
if ((ref($inlinetools) eq 'HASH') && (ref($toolsorder) eq 'ARRAY')) { |
|
foreach my $tool (@{$toolsorder}) { |
|
my ($command,$row,$col,$img,$top,$bot,$act,$desc) = |
|
split(/\&/,$inlinetools->{$tool}); |
|
$iconic_preview .= '<li><a title="'.$desc.'" class="LC_menubuttons_link" href=""><img alt="'.$desc.'" src="/res/adm/pages/'.$img.'" class="LC_icon" /><span class="LC_menubuttons_inline_text">'.$top.(' ' x 2).'</span></a></li>'; |
|
$iconsonly_preview .= '<li><a title="'.$desc.'" class="LC_menubuttons_link" href=""><img alt="'.$desc.'" src="/res/adm/pages/'.$img.'" class="LC_icon" /> </a></li>'; |
|
} |
|
} |
|
$iconsonly_preview = '<ul class="LC_breadcrumb_tools_outerlist"><li>'. |
|
'<ul>'. |
|
$iconsonly_preview. |
|
'</ul></li></ul>'; |
|
$iconic_preview = '<ul class="LC_breadcrumb_tools_outerlist"><li>'. |
|
'<ul>'. |
|
$iconic_preview. |
|
'</ul></li></ul>'; |
$r->print(<<ENDSCREEN); |
$r->print(<<ENDSCREEN); |
|
$classic |
<form name="prefs" action="/adm/preferences" method="post"> |
<form name="prefs" action="/adm/preferences" method="post"> |
<input type="hidden" name="action" value="verify_and_change_icons" /> |
<input type="hidden" name="action" value="verify_and_change_icons" /> |
<label><input type="radio" name="menumode" value="iconic" $iconic /> $useicons</label><br /> |
<label><input type="radio" name="menumode" value="iconic" $iconic /> $lt{'iconic'}</label>$iconic_preview<br /> |
<label><input type="radio" name="menumode" value="classic" $classic /> $usebuttons</label><br /> |
<label><input type="radio" name="menumode" value="iconsonly" $onlyicon /> $lt{'iconsonly'}</label>$iconsonly_preview<br /> |
<label><input type="radio" name="menumode" value="iconsonly" $onlyicon /> $useicononly</label><br /> |
|
<input type="submit" value="$change" /> |
<input type="submit" value="$change" /> |
</form> |
</form> |
ENDSCREEN |
ENDSCREEN |
Line 554 sub verify_and_change_icons {
|
Line 636 sub verify_and_change_icons {
|
my $r = shift; |
my $r = shift; |
my $user = $env{'user.name'}; |
my $user = $env{'user.name'}; |
my $domain = $env{'user.domain'}; |
my $domain = $env{'user.domain'}; |
my $newicons = $env{'form.menumode'}; |
my $newicons = $env{'form.menumode'}; |
|
my %lt = &icon_options(); |
|
my $newchoice = $newicons; |
|
if ($lt{$newicons}) { |
|
$newchoice = $lt{$newicons}; |
|
} |
&Apache::lonnet::put('environment',{'icons' => $newicons}); |
&Apache::lonnet::put('environment',{'icons' => $newicons}); |
&Apache::lonnet::appenv('environment.icons' => $newicons); |
&Apache::lonnet::appenv({'environment.icons' => $newicons}); |
$r->print(&mt('Set menu mode to [_1].',$newicons)); |
my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Menu Display').'</i>','<tt>'.$newchoice.'</tt>')); |
|
$message=&Apache::loncommon::confirmwrapper($message); |
|
&print_main_menu($r, $message); |
|
} |
|
|
|
sub icon_options { |
|
return &Apache::lonlocal::texthash( |
|
iconic => 'Use icons and text', |
|
iconsonly => 'Use icons only', |
|
); |
|
} |
|
|
|
sub icon_previews { |
|
my %icon_text = ( |
|
annotate => 'Notes', |
|
wishlist => 'Stored Links', |
|
catalog => 'Info', |
|
evaluate => 'Evaluate', |
|
feedback => 'Communicate', |
|
printout => 'Print', |
|
); |
|
my %inlinetools = ( |
|
printout => "s&8&3&prt.png&$icon_text{'printout'}&printout[_1]&gopost('/adm/printout',currentURL)&Prepare a printable document", |
|
wishlist => "s&9&1&wishlist-link.png&$icon_text{'wishlist'}&wishlistlink[_2]&set_wishlistlink()&Save a link for this resource in your personal Stored Links repository", |
|
evaluate => "s&8&1&eval.png&$icon_text{'evaluate'}&this[_1]&gopost('/adm/evaluate',currentURL,1)&Provide my evaluation of this resource", |
|
feedback => "s&8&2&fdbk.png&$icon_text{'feedback'}&discuss[_1]&gopost('/adm/feedback',currentURL,1)&Provide feedback messages or contribute to the course discussion about this resource", |
|
annotate => "s&9&3&anot.png&$icon_text{'annotate'}&tations[_1]&annotate()&Make notes and annotations about this resource", |
|
catalog => "s&6&3&catalog.png&$icon_text{'catalog'}&info[_1]&catalog_info()&Show Metadata", |
|
); |
|
my @toolsorder = qw(annotate wishlist evaluate feedback printout catalog); |
|
return (\%inlinetools,\@toolsorder); |
} |
} |
|
|
################################################################ |
################################################################ |
|
# Clicker Subroutines # |
|
################################################################ |
|
|
|
sub clickerchanger { |
|
my $r = shift; |
|
&Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=changeclicker', |
|
text => 'Register Clicker'}); |
|
$r->print(Apache::loncommon::start_page('Other')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Register Clicker')); |
|
my $user = $env{'user.name'}; |
|
my $domain = $env{'user.domain'}; |
|
my %userenv = &Apache::lonnet::get |
|
('environment',['clickers']); |
|
my $clickers=$userenv{'clickers'}; |
|
$clickers=~s/\,/\n/gs; |
|
my $text=&mt('Enter response device ("clicker") numbers'); |
|
my $change=&mt('Save'); |
|
my $helplink=&Apache::loncommon::help_open_topic('Clicker_Registration',&mt('Locating your clicker ID')); |
|
$r->print(<<ENDSCREEN); |
|
<form name="prefs" action="/adm/preferences" method="post"> |
|
<input type="hidden" name="action" value="verify_and_change_clicker" /> |
|
<label>$helplink<br /><br />$text<br /> |
|
<textarea name="clickers" rows="5" cols="20">$clickers</textarea> |
|
</label> |
|
<br /> |
|
<input type="submit" value="$change" /> |
|
</form> |
|
ENDSCREEN |
|
} |
|
|
|
sub verify_and_change_clicker { |
|
my $r = shift; |
|
my $user = $env{'user.name'}; |
|
my $domain = $env{'user.domain'}; |
|
my $newclickers = $env{'form.clickers'}; |
|
$newclickers=~s/[^\w\:\-]+/\,/gs; |
|
$newclickers=~tr/a-z/A-Z/; |
|
$newclickers=~s/[\:\-]+/\-/g; |
|
$newclickers=~s/\,+/\,/g; |
|
$newclickers=~s/^\,//; |
|
$newclickers=~s/\,$//; |
|
&Apache::lonnet::put('environment',{'clickers' => $newclickers}); |
|
&Apache::lonnet::appenv({'environment.clickers' => $newclickers}); |
|
my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Registering clickers: [_1]',$newclickers)); |
|
$message=&Apache::loncommon::confirmwrapper($message); |
|
&print_main_menu($r, $message); |
|
} |
|
|
|
################################################################ |
|
# Domcoord Access Subroutines # |
|
################################################################ |
|
|
|
sub domcoordchanger { |
|
my $r = shift; |
|
&Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=changedomcoord', |
|
text => 'Restrict Domain Coordinator Access'}); |
|
$r->print(Apache::loncommon::start_page('Restrict Domain Coordinator Access')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Restrict Domain Coordinator Access')); |
|
my $user = $env{'user.name'}; |
|
my $domain = $env{'user.domain'}; |
|
my %userenv = &Apache::lonnet::get |
|
('environment',['domcoord.author']); |
|
my $constchecked=''; |
|
if ($userenv{'domcoord.author'} eq 'blocked') { |
|
$constchecked=' checked="checked"'; |
|
} |
|
my $text=&mt('By default, the Domain Coordinator can enter your Authoring Space.'); |
|
my $construction=&mt('Block access to Authoring Space'); |
|
my $change=&mt('Save'); |
|
$r->print(<<ENDSCREEN); |
|
<form name="prefs" action="/adm/preferences" method="post"> |
|
<input type="hidden" name="action" value="verify_and_change_domcoord" /> |
|
$text<br /> |
|
<label><input type="checkbox" name="construction"$constchecked />$construction</label><br /> |
|
<input type="submit" value="$change" /> |
|
</form> |
|
ENDSCREEN |
|
} |
|
|
|
sub verify_and_change_domcoord { |
|
my $r = shift; |
|
my $user = $env{'user.name'}; |
|
my $domain = $env{'user.domain'}; |
|
my %domcoord=('domcoord.author' => ''); |
|
if ($env{'form.construction'}) { $domcoord{'domcoord.author'}='blocked'; } |
|
&Apache::lonnet::put('environment',\%domcoord); |
|
&Apache::lonnet::appenv({'environment.domcoord.author' => $domcoord{'domcoord.author'}}); |
|
my $status=''; |
|
if ($domcoord{'domcoord.author'} eq 'blocked') { |
|
$status=&mt('on'); |
|
} else { |
|
$status=&mt('off'); |
|
} |
|
my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Block access to Authoring Space').'</i>','<tt>'.$status.'</tt>')); |
|
$message=&Apache::loncommon::confirmwrapper($message); |
|
&print_main_menu($r,$message); |
|
} |
|
|
|
################################################################# |
|
## Lock Subroutines # |
|
################################################################# |
|
|
|
sub lockwarning { |
|
my $r = shift; |
|
my $title=&mt('Action locked'); |
|
my $texttop=&mt('LON-CAPA is currently performing the following actions:'); |
|
my $textbottom=&mt('Changing roles or logging out may result in data corruption.'); |
|
my ($num,%which)=&Apache::lonnet::get_locks(); |
|
my $which=''; |
|
foreach my $id (keys(%which)) { |
|
$which.='<li>'.$which{$id}.'</li>'; |
|
} |
|
my $change=&mt('Override'); |
|
$r->print(<<ENDSCREEN); |
|
<form name="prefs" action="/adm/preferences" method="post"> |
|
<input type="hidden" name="action" value="verify_and_change_locks" /> |
|
<h1>$title</h1> |
|
$texttop |
|
<ul> |
|
$which |
|
</ul> |
|
$textbottom |
|
<input type="submit" value="$change" /> |
|
</form> |
|
ENDSCREEN |
|
} |
|
|
|
sub verify_and_change_lockwarning { |
|
my $r = shift; |
|
&Apache::lonnet::remove_all_locks(); |
|
$r->print(&mt('Cleared locks.')); |
|
} |
|
|
|
|
|
################################################################ |
# Message Forward # |
# Message Forward # |
################################################################ |
################################################################ |
|
|
Line 575 sub msgforwardchanger {
|
Line 828 sub msgforwardchanger {
|
all => 'All', |
all => 'All', |
crit => 'Critical only', |
crit => 'Critical only', |
reg => 'Non-critical only', |
reg => 'Non-critical only', |
foad => 'Forwarding Address(es)', |
foad => 'Forward to account(s)', |
mnot => 'Message Notification Email Address(es)', |
fwdm => 'Forward messages to other account(s) in LON-CAPA', |
chg => 'Change', |
noti => 'E-mail notification of LON-CAPA messages', |
email => 'The e-mail address you entered', |
mnot => 'E-mail address(es) which should be notified about new LON-CAPA messages', |
|
chg => 'Save', |
|
email => 'The e-mail address entered in row ', |
notv => 'is not a valid e-mail address', |
notv => 'is not a valid e-mail address', |
toen => "To enter multiple addresses, enter one address at a time, click 'Change' and then add the next one', |
toen => "To enter multiple addresses, enter one address at a time, click 'Change' and then add the next one", |
prme => 'Back to preferences menu', |
prme => 'Back', |
); |
); |
my $forwardingHelp = Apache::loncommon::help_open_topic("Prefs_Forwarding", |
$lt{'foad_exmpl'} = &mt('e.g. [_1]userA:domain1,userB:domain2,...[_2]','<tt>','</tt>'); |
"What are forwarding ". |
$lt{'mnot_exmpl'} = &mt('e.g. [_1]joe@doe.com[_2]','<tt>','</tt>'); |
"and notification ". |
Apache::lonhtmlcommon::add_breadcrumb( |
"addresses"); |
{ href => '/adm/preferences?action=changemsgforward', |
my $criticalMessageHelp = Apache::loncommon::help_open_topic("Course_Critical_Message", |
text => 'Messages & Notifications'}); |
"What are critical messages"); |
$r->print(Apache::loncommon::start_page('Messages & Notifications')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Messages & Notifications')); |
|
my $forwardingHelp = &Apache::loncommon::help_open_topic("Prefs_Forwarding"); |
|
my $notificationHelp = &Apache::loncommon::help_open_topic("Prefs_Notification"); |
|
my $criticalMessageHelp = &Apache::loncommon::help_open_topic("Course_Critical_Message"); |
my @allow_html = split(/,/,$userenv{'notifywithhtml'}); |
my @allow_html = split(/,/,$userenv{'notifywithhtml'}); |
my %allnot = &get_notifications(\%userenv); |
my %allnot = &get_notifications(\%userenv); |
my $validatescript = &Apache::lonhtmlcommon::javascript_valid_email(); |
my $validatescript = &Apache::lonhtmlcommon::javascript_valid_email(); |
my $jscript = qq| |
my $jscript = qq| |
<script type="text/javascript"> |
<script type="text/javascript" language="JavaScript"> |
function validate() { |
function validate() { |
var checkaddress = 0; |
|
for (var i=0; i<document.prefs.numnotify.value; i++) { |
for (var i=0; i<document.prefs.numnotify.value; i++) { |
|
var checkaddress = 0; |
var addr = document.prefs.elements['address_'+i].value; |
var addr = document.prefs.elements['address_'+i].value; |
|
var rownum = i+1; |
if (i < document.prefs.numnotify.value-1) { |
if (i < document.prefs.numnotify.value-1) { |
if (document.prefs.elements['del_notify_'+i].value == false) { |
if (document.prefs.elements['modify_notify_'+i].checked) { |
checkaddress = 1; |
checkaddress = 1; |
} |
} |
} else { |
} else { |
if (document.prefs.elements['add_notify_'+i].checked == true) { |
if (document.prefs.elements['add_notify_'+i].checked == true) { |
checkaddress = 1; |
checkaddress = 1; |
} |
} |
} |
} |
if (checkaddress== 1) { |
if (checkaddress == 1) { |
var addr = document.prefs.elements['address_'+i].value; |
var addr = document.prefs.elements['address_'+i].value; |
if (validmail(document.prefs.elements['address_'+i]) == false) { |
if (validmail(document.prefs.elements['address_'+i]) == false) { |
alert("$lt{'email'}: "+addr+" $lt{'notv'}.\\n($lt{'toen'})."); |
var multimsg = ''; |
|
if (addr.indexOf(",") >= 0) { |
|
multimsg = "\\n($lt{'toen'})."; |
|
} |
|
alert("$lt{'email'} "+rownum+" ('"+addr+"') $lt{'notv'}."+multimsg); |
return; |
return; |
} |
} |
} |
} |
} |
} |
document.prefs.submit(); |
document.prefs.submit(); |
} |
} |
|
|
|
function address_changes (adnum) { |
|
if (!document.prefs.elements['del_notify_'+adnum].checked) { |
|
document.prefs.elements['modify_notify_'+adnum].checked = true; |
|
} |
|
} |
|
|
|
function new_address(adnum) { |
|
document.prefs.elements['add_notify_'+adnum].checked = true; |
|
} |
|
|
|
function delete_address(adnum) { |
|
if (document.prefs.elements['del_notify_'+adnum].checked) { |
|
document.prefs.elements['modify_notify_'+adnum].checked = false; |
|
} |
|
} |
|
|
|
function modify_address(adnum) { |
|
if (document.prefs.elements['modify_notify_'+adnum].checked) { |
|
document.prefs.elements['del_notify_'+adnum].checked = false; |
|
} |
|
} |
|
|
$validatescript |
$validatescript |
</script> |
</script> |
|; |
|; |
$r->print(<<ENDMSG); |
$r->print(<<ENDMSG); |
$jscript |
$jscript |
$message |
$message |
$forwardingHelp |
<h3>$lt{'fwdm'} $forwardingHelp</h3> |
<form name="prefs" action="/adm/preferences" method="post"> |
<form name="prefs" action="/adm/preferences" method="post"> |
<input type="hidden" name="action" value="verify_and_change_msgforward" /> |
<input type="hidden" name="action" value="verify_and_change_msgforward" /> |
$lt{'foad'} (<tt>user:domain,user:domain,...</tt>): |
$lt{'foad'} ($lt{'foad_exmpl'}): |
<input type="text" size="40" value="$msgforward" name="msgforward" /><hr /> |
<input type="text" size="40" value="$msgforward" name="msgforward" /> |
$criticalMessageHelp |
<br /><br /> |
$lt{'mnot'} (<tt>joe\@doe.com</tt>):<br /> |
<h3>$lt{'noti'} $notificationHelp</h3> |
|
$lt{'mnot'} ($lt{'mnot_exmpl'}):<br /> |
ENDMSG |
ENDMSG |
my @sortforwards = sort (keys(%allnot)); |
my @sortforwards = sort (keys(%allnot)); |
my $output = &Apache::loncommon::start_data_table(). |
my $output = &Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row(). |
&Apache::loncommon::start_data_table_header_row(). |
|
'<th> </th>'. |
'<th>'.&mt('Action').'</th>'. |
'<th>'.&mt('Action').'</th>'. |
'<th>'.&mt('Notification address').'</th><th>'. |
'<th>'.&mt('Notification address').'</th><th>'. |
&mt('Messages to forward').'</th><th>'. |
&mt('Types of message for which notification is sent'). |
&mt('Excerpt retains HTML tags included in message').'</th>'. |
$criticalMessageHelp.'</th><th>'. |
|
&mt('Excerpt retains HTML tags in message').'</th>'. |
&Apache::loncommon::end_data_table_header_row(); |
&Apache::loncommon::end_data_table_header_row(); |
my $num = 0; |
my $num = 0; |
|
my $counter = 1; |
foreach my $item (@sortforwards) { |
foreach my $item (@sortforwards) { |
$output .= &Apache::loncommon::start_data_table_row(). |
$output .= &Apache::loncommon::start_data_table_row(). |
'<td><input type="checkbox" name="del_notify_'.$num.'" />'. |
'<td><b>'.$counter.'</b></td>'. |
&mt('Delete').'</td>'. |
'<td><span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="modify_notify_'. |
|
$num.'" onclick="javscript:modify_address('."'$num'".')" />'. |
|
&mt('Modify').'</label></span> '. |
|
'<span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="del_notify_'.$num. |
|
'" onclick="javscript:delete_address('."'$num'".')" />'. |
|
&mt('Delete').'</label></span></td>'. |
'<td><input type="text" value="'.$item.'" name="address_'. |
'<td><input type="text" value="'.$item.'" name="address_'. |
$num.'" /></td><td>'; |
$num.'" onfocus="javascript:address_changes('."'$num'". |
|
')" /></td><td>'; |
my %chk; |
my %chk; |
if (defined($allnot{$item}{'crit'})) { |
if (defined($allnot{$item}{'crit'})) { |
if (defined($allnot{$item}{'reg'})) { |
if (defined($allnot{$item}{'reg'})) { |
Line 659 ENDMSG
|
Line 958 ENDMSG
|
foreach my $type ('all','crit','reg') { |
foreach my $type ('all','crit','reg') { |
$output .= '<span class="LC_nobreak"><label>'. |
$output .= '<span class="LC_nobreak"><label>'. |
'<input type="radio" name="notify_type_'.$num. |
'<input type="radio" name="notify_type_'.$num. |
'" value="'.$type.'" '.$chk{$type}.'/>'.$lt{$type}.'</label></span> '; |
'" value="'.$type.'" '.$chk{$type}. |
|
' onchange="javascript:address_changes('."'$num'".')" />'. |
|
$lt{$type}.'</label></span>'.(' ' x4); |
} |
} |
my $htmlon = ''; |
my $htmlon = ''; |
my $htmloff = ''; |
my $htmloff = ''; |
Line 669 ENDMSG
|
Line 970 ENDMSG
|
$htmloff = 'checked="checked" '; |
$htmloff = 'checked="checked" '; |
} |
} |
$output .= '</td><td><label><input type="radio" name="html_'.$num. |
$output .= '</td><td><label><input type="radio" name="html_'.$num. |
'" value="1" '.$htmlon.'/>'.&mt('Yes').'</label> '. |
'" value="1" '.$htmlon. |
|
' onchange="javascript:address_changes('."'$num'".')" />'. |
|
&mt('Yes').'</label>'.(' ' x3). |
'<label><input type="radio" name="html_'.$num.'" value="0" '. |
'<label><input type="radio" name="html_'.$num.'" value="0" '. |
$htmloff.'/>'.&mt('No').'</label></td>'. |
$htmloff. ' onchange="javascript:address_changes('."'$num'". |
|
')" />'. |
|
&mt('No').'</label></td>'. |
&Apache::loncommon::end_data_table_row(); |
&Apache::loncommon::end_data_table_row(); |
$num ++; |
$num ++; |
|
$counter ++; |
} |
} |
my %defchk = ( |
my %defchk = ( |
all => 'checked="checked" ', |
all => 'checked="checked" ', |
Line 681 ENDMSG
|
Line 987 ENDMSG
|
reg => '', |
reg => '', |
); |
); |
$output .= &Apache::loncommon::start_data_table_row(). |
$output .= &Apache::loncommon::start_data_table_row(). |
'<td><input type="checkbox" name="add_notify_'.$num.'" />'. |
'<td><b>'.$counter.'</b></td>'. |
&mt('Add').'</td>'. |
'<td><span class="LC_nobreak"><label>'. |
|
'<input type="checkbox" name="add_notify_'.$num. |
|
'" value="1" />'.&mt('Add new address').'</label></span></td>'. |
'<td><input type="text" value="" name="address_'.$num. |
'<td><input type="text" value="" name="address_'.$num. |
'" /></td><td>'; |
'" onfocus="javascript:new_address('."'$num'".')" /></td><td>'; |
foreach my $type ('all','crit','reg') { |
foreach my $type ('all','crit','reg') { |
$output .= '<span class="LC_nobreak"><label>'. |
$output .= '<span class="LC_nobreak"><label>'. |
'<input type="radio" name="notify_type_'.$num. |
'<input type="radio" name="notify_type_'.$num. |
'" value="'.$type.'" '.$defchk{$type}.'/>'. |
'" value="'.$type.'" '.$defchk{$type}.'/>'. |
$lt{$type}.'</label></span> '; |
$lt{$type}.'</label></span>'.(' ' x4); |
} |
} |
$output .= '</td><td><label><input type="radio" name="html_'.$num. |
$output .= '</td><td><label><input type="radio" name="html_'.$num. |
'" value="1" />'.&mt('Yes').'</label> '. |
'" value="1" />'.&mt('Yes').'</label>'.(' ' x3). |
'<label><input type="radio" name="html_'.$num.'" value="0" '. |
'<label><input type="radio" name="html_'.$num.'" value="0" '. |
' checked="checked" />'. |
' checked="checked" />'. |
&mt('No').'</label></td>'. |
&mt('No').'</label></td>'. |
Line 701 ENDMSG
|
Line 1009 ENDMSG
|
$num ++; |
$num ++; |
$r->print($output); |
$r->print($output); |
$r->print(qq| |
$r->print(qq| |
<hr /> |
<br /><hr /> |
<input type="hidden" name="numnotify" value="$num" /> |
<input type="hidden" name="numnotify" value="$num" /> |
<input type="button" value="$lt{'chg'}" onclick="javascript:validate()" /> |
|
<input type="button" value="$lt{'prme'}" onclick="location.href='/adm/preferences'" /> |
<input type="button" value="$lt{'prme'}" onclick="location.href='/adm/preferences'" /> |
|
<input type="button" value="$lt{'chg'}" onclick="javascript:validate()" /> |
</form> |
</form> |
|); |
|); |
|
|
Line 730 sub verify_and_change_msgforward {
|
Line 1038 sub verify_and_change_msgforward {
|
my $domain = $env{'user.domain'}; |
my $domain = $env{'user.domain'}; |
my $newscreen = ''; |
my $newscreen = ''; |
my $message=''; |
my $message=''; |
foreach (split(/\,/,$env{'form.msgforward'})) { |
foreach my $recip (split(/\,/,$env{'form.msgforward'})) { |
my ($msuser,$msdomain)=split(/[\@\:]/,$_); |
my ($msuser,$msdomain); |
|
if ($recip =~ /:/) { |
|
($msuser,$msdomain)=split(':',$recip); |
|
} else { |
|
($msuser,$msdomain)=split(/\@/,$recip); |
|
} |
$msuser = &LONCAPA::clean_username($msuser); |
$msuser = &LONCAPA::clean_username($msuser); |
$msdomain = &LONCAPA::clean_domain($msdomain); |
$msdomain = &LONCAPA::clean_domain($msdomain); |
if (($msuser) && ($msdomain)) { |
if (($msuser) && ($msdomain)) { |
if (&Apache::lonnet::homeserver($msuser,$msdomain) ne 'no_host') { |
if (&Apache::lonnet::homeserver($msuser,$msdomain) ne 'no_host') { |
$newscreen.=$msuser.':'.$msdomain.','; |
$newscreen.=$msuser.':'.$msdomain.','; |
} else { |
} else { |
$message.= &mt('No such user: ').$msuser.':'.$msdomain.'<br>'; |
$message.= &mt('No such user: ').'<tt>'.$msuser.':'.$msdomain.'</tt><br />'; |
} |
} |
} |
} |
} |
} |
$newscreen=~s/\,$//; |
$newscreen=~s/\,$//; |
if ($newscreen) { |
if ($newscreen) { |
&Apache::lonnet::put('environment',{'msgforward' => $newscreen}); |
&Apache::lonnet::put('environment',{'msgforward' => $newscreen}); |
&Apache::lonnet::appenv('environment.msgforward' => $newscreen); |
&Apache::lonnet::appenv({'environment.msgforward' => $newscreen}); |
$message .= &mt('Set message forwarding to: ').'<tt>'.$newscreen. |
$message .= &Apache::lonhtmlcommon::confirm_success(&mt('Set message forwarding to ').'<tt>"'.$newscreen.'"</tt>.<br />'); |
'</tt><br />'; |
|
} else { |
} else { |
&Apache::lonnet::del('environment',['msgforward']); |
&Apache::lonnet::del('environment',['msgforward']); |
&Apache::lonnet::delenv('environment\.msgforward'); |
&Apache::lonnet::delenv('environment.msgforward'); |
$message.= &mt("Set message forwarding to 'off'.").'<br />'; |
$message.= &Apache::lonhtmlcommon::confirm_success(&mt("Set message forwarding to 'off'.").'<br />'); |
} |
} |
my $critnotification; |
my $critnotification; |
my $notification; |
my $notification; |
my $notify_with_html; |
my $notify_with_html; |
my $lastnotify = $env{'form.numnotify'}-1; |
my $lastnotify = $env{'form.numnotify'}-1; |
|
my $totaladdresses = 0; |
for (my $i=0; $i<$env{'form.numnotify'}; $i++) { |
for (my $i=0; $i<$env{'form.numnotify'}; $i++) { |
if ((!defined($env{'form.del_notify_'.$i})) && |
if ((!defined($env{'form.del_notify_'.$i})) && |
((($i==$lastnotify) && (defined($env{'form.add_notify_'.$lastnotify}))) || |
((($i==$lastnotify) && ($env{'form.add_notify_'.$lastnotify} == 1)) || |
($i<$lastnotify))) { |
($i<$lastnotify))) { |
if (defined($env{'form.address_'.$i})) { |
if (defined($env{'form.address_'.$i})) { |
if ($env{'form.notify_type_'.$i} eq 'all') { |
if ($env{'form.notify_type_'.$i} eq 'all') { |
Line 773 sub verify_and_change_msgforward {
|
Line 1086 sub verify_and_change_msgforward {
|
if ($env{'form.html_'.$i} eq '1') { |
if ($env{'form.html_'.$i} eq '1') { |
$notify_with_html .= $env{'form.address_'.$i}.','; |
$notify_with_html .= $env{'form.address_'.$i}.','; |
} |
} |
|
$totaladdresses ++; |
} |
} |
} |
} |
} |
} |
Line 784 sub verify_and_change_msgforward {
|
Line 1098 sub verify_and_change_msgforward {
|
$notify_with_html =~ s/\s//gs; |
$notify_with_html =~ s/\s//gs; |
if ($notification) { |
if ($notification) { |
&Apache::lonnet::put('environment',{'notification' => $notification}); |
&Apache::lonnet::put('environment',{'notification' => $notification}); |
&Apache::lonnet::appenv('environment.notification' => $notification); |
&Apache::lonnet::appenv({'environment.notification' => $notification}); |
$message.=&mt('Set non-critical message notification address(es) to: ').'<tt>'.$notification.'</tt><br />'; |
$message.=&Apache::lonhtmlcommon::confirm_success(&mt('Set non-critical message notification address(es) to ').'<tt>"'.$notification.'"</tt>.<br />'); |
} else { |
} else { |
&Apache::lonnet::del('environment',['notification']); |
&Apache::lonnet::del('environment',['notification']); |
&Apache::lonnet::delenv('environment\.notification'); |
&Apache::lonnet::delenv('environment.notification'); |
$message.=&mt("Non-critical message notification set to 'off'.").'<br />'; |
$message.=&Apache::lonhtmlcommon::confirm_success(&mt("Set non-critical message notification to 'off'.").'<br />'); |
} |
} |
if ($critnotification) { |
if ($critnotification) { |
&Apache::lonnet::put('environment',{'critnotification' => $critnotification}); |
&Apache::lonnet::put('environment',{'critnotification' => $critnotification}); |
&Apache::lonnet::appenv('environment.critnotification' => $critnotification); |
&Apache::lonnet::appenv({'environment.critnotification' => $critnotification}); |
$message.=&mt('Set critical message notification address(es) to: ').'<tt>'.$critnotification.'</tt><br />'; |
$message.=&Apache::lonhtmlcommon::confirm_success(&mt('Set critical message notification address(es) to ').'<tt>"'.$critnotification.'"</tt>.<br />'); |
} else { |
} else { |
&Apache::lonnet::del('environment',['critnotification']); |
&Apache::lonnet::del('environment',['critnotification']); |
&Apache::lonnet::delenv('environment\.critnotification'); |
&Apache::lonnet::delenv('environment.critnotification'); |
$message.=&mt('Critical message notification set to off').'<br />'; |
$message.=&Apache::lonhtmlcommon::confirm_success(&mt("Set critical message notification to 'off'.").'<br />'); |
} |
} |
if ($critnotification || $notification) { |
if ($critnotification || $notification) { |
if ($notify_with_html) { |
if ($notify_with_html) { |
&Apache::lonnet::put('environment',{'notifywithhtml' => $notify_with_html}); |
&Apache::lonnet::put('environment',{'notifywithhtml' => $notify_with_html}); |
&Apache::lonnet::appenv('environment.notifywithhtml' => $notify_with_html); |
&Apache::lonnet::appenv({'environment.notifywithhtml' => $notify_with_html}); |
$message.=&mt('Set address(es) to receive excerpts with html retained: ').'<tt>'.$notify_with_html.'</tt>'; |
$message.=&Apache::lonhtmlcommon::confirm_success(&mt('Set address(es) to receive excerpts with html retained ').'<tt>"'.$notify_with_html.'"</tt>.'); |
} else { |
} else { |
&Apache::lonnet::del('environment',['notifywithhtml']); |
&Apache::lonnet::del('environment',['notifywithhtml']); |
&Apache::lonnet::delenv('environment\.notifywithhtml'); |
&Apache::lonnet::delenv('environment.notifywithhtml'); |
$message.=&mt("Set all notification address(es) to receive excerpts with html stripped.").'<br />'; |
if ($totaladdresses == 1) { |
|
$message.=&Apache::lonhtmlcommon::confirm_success(&mt("Set notification address to receive excerpts with html stripped.")); |
|
} else { |
|
$message.=&Apache::lonhtmlcommon::confirm_success(&mt("Set all notification addresses to receive excerpts with html stripped.")); |
|
} |
} |
} |
} else { |
} else { |
&Apache::lonnet::del('environment',['notifywithhtml']); |
&Apache::lonnet::del('environment',['notifywithhtml']); |
&Apache::lonnet::delenv('environment\.notifywithhtml'); |
&Apache::lonnet::delenv('environment.notifywithhtml'); |
} |
|
if ($message) { |
|
$message .= '<br /><hr />'; |
|
} |
} |
|
&Apache::loncommon::flush_email_cache($user,$domain); |
|
$message=&Apache::loncommon::confirmwrapper($message); |
&msgforwardchanger($r,$message); |
&msgforwardchanger($r,$message); |
} |
} |
|
|
Line 826 sub verify_and_change_msgforward {
|
Line 1143 sub verify_and_change_msgforward {
|
|
|
sub colorschanger { |
sub colorschanger { |
my $r = shift; |
my $r = shift; |
|
Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=changecolors', |
|
text => 'Change Colors'}); |
|
$r->print(Apache::loncommon::start_page('Page Display Settings')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change Colors')); |
# figure out colors |
# figure out colors |
my $function=&Apache::loncommon::get_users_function(); |
my $function=&Apache::loncommon::get_users_function(); |
my $domain=&Apache::loncommon::determinedomain(); |
my $domain=&Apache::loncommon::determinedomain(); |
my %colortypes=('pgbg' => 'Page Background', |
my %colortypes=&Apache::lonlocal::texthash( |
'tabbg' => 'Header Background', |
'pgbg' => 'Page Background Color', |
'sidebg'=> 'Header Border', |
'tabbg' => 'Header Background Color', |
'font' => 'Font', |
'sidebg' => 'Header Border Color', |
'link' => 'Un-Visited Link', |
'font' => 'Font Color', |
'vlink' => 'Visited Link', |
'fontmenu' => 'Font Menu Color', |
'alink' => 'Active Link'); |
'link' => 'Un-Visited Link Color', |
|
'vlink' => 'Visited Link Color', |
|
'alink' => 'Active Link Color', |
|
); |
my $start_data_table = &Apache::loncommon::start_data_table(); |
my $start_data_table = &Apache::loncommon::start_data_table(); |
my $chtable=''; |
my $chtable=''; |
foreach my $item (sort(keys(%colortypes))) { |
foreach my $item (sort(keys(%colortypes))) { |
my $curcol=&Apache::loncommon::designparm($function.'.'.$item,$domain); |
my $curcol=&Apache::loncommon::designparm($function.'.'.$item,$domain); |
$chtable.=&Apache::loncommon::start_data_table_row(). |
$chtable.=&Apache::loncommon::start_data_table_row(). |
'<td>'.$colortypes{$item}.'</td><td style="background: '.$curcol. |
'<td>'.$colortypes{$item}.'<td><input name="'.$item. |
'"> </td><td><input name="'.$item. |
'" class="colorchooser" size="10" value="'.$curcol. |
'" size="10" value="'.$curcol. |
'" /></td>'. |
'" /></td><td><a href="javascript:pjump('."'color_custom','".$colortypes{$item}. |
|
"','".$curcol."','" |
|
.$item."','parmform.pres','psub'".');">Select</a></td>'. |
|
&Apache::loncommon::end_data_table_row()."\n"; |
&Apache::loncommon::end_data_table_row()."\n"; |
} |
} |
my $end_data_table = &Apache::loncommon::end_data_table(); |
my $end_data_table = &Apache::loncommon::end_data_table(); |
my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); |
my $pjump_def = &Apache::lonhtmlcommon::pjump_javascript_definition(); |
|
my $savebutton = &mt('Save'); |
|
my $resetbutton = &mt('Reset All'); |
|
my $resetbuttondesc = &mt('Reset All Colors to Default'); |
|
my $colorchooser=&Apache::lonhtmlcommon::color_picker(); |
|
$r->print('<script type="text/javascript" language="JavaScript"> |
|
' . $colorchooser . ' |
|
</script> |
|
'); |
$r->print(<<ENDCOL); |
$r->print(<<ENDCOL); |
<script type="text/javascript"> |
|
|
|
function pclose() { |
|
parmwin=window.open("/adm/rat/empty.html","LONCAPAparms", |
|
"height=350,width=350,scrollbars=no,menubar=no"); |
|
parmwin.close(); |
|
} |
|
|
|
$pjump_def |
|
|
|
function psub() { |
|
pclose(); |
|
if (document.parmform.pres_marker.value!='') { |
|
if (document.parmform.pres_type.value!='') { |
|
eval('document.prefs.'+ |
|
document.parmform.pres_marker.value+ |
|
'.value=document.parmform.pres_value.value;'); |
|
} |
|
} else { |
|
document.parmform.pres_value.value=''; |
|
document.parmform.pres_marker.value=''; |
|
} |
|
} |
|
|
|
|
|
</script> |
<form name="parmform" action=""> |
<form name="parmform"> |
|
<input type="hidden" name="pres_marker" /> |
<input type="hidden" name="pres_marker" /> |
<input type="hidden" name="pres_type" /> |
<input type="hidden" name="pres_type" /> |
<input type="hidden" name="pres_value" /> |
<input type="hidden" name="pres_value" /> |
Line 889 $start_data_table
|
Line 1194 $start_data_table
|
$chtable |
$chtable |
$end_data_table |
$end_data_table |
</table> |
</table> |
<input type="submit" value="Change Custom Colors" /> |
<p> |
<input type="submit" name="resetall" value="Reset All Colors to Default" /> |
<input type="submit" value="$savebutton" /> |
|
<input type="submit" name="resetall" value="$resetbutton" title="$resetbuttondesc" /> |
|
</p> |
</form> |
</form> |
ENDCOL |
ENDCOL |
} |
} |
Line 900 sub verify_and_change_colors {
|
Line 1207 sub verify_and_change_colors {
|
# figure out colors |
# figure out colors |
my $function=&Apache::loncommon::get_users_function(); |
my $function=&Apache::loncommon::get_users_function(); |
my $domain=&Apache::loncommon::determinedomain(); |
my $domain=&Apache::loncommon::determinedomain(); |
my %colortypes=('pgbg' => 'Page Background', |
my %colortypes=&Apache::lonlocal::texthash( |
'tabbg' => 'Header Background', |
'pgbg' => 'Page Background Color', |
'sidebg'=> 'Header Border', |
'tabbg' => 'Header Background Color', |
'font' => 'Font', |
'sidebg' => 'Header Border Color', |
'link' => 'Un-Visited Link', |
'font' => 'Font Color', |
'vlink' => 'Visited Link', |
'fontmenu' => 'Font Menu Color', |
'alink' => 'Active Link'); |
'link' => 'Un-Visited Link Color', |
|
'vlink' => 'Visited Link Color', |
|
'alink' => 'Active Link Color', |
|
); |
|
|
my $message=''; |
my $message=''; |
foreach my $item (keys %colortypes) { |
foreach my $item (keys(%colortypes)) { |
my $color=$env{'form.'.$item}; |
my $color=$env{'form.'.$item}; |
|
if (!($color =~ /^#/)) { |
|
$color = '#' . $color; |
|
} |
my $entry='color.'.$function.'.'.$item; |
my $entry='color.'.$function.'.'.$item; |
if (($color=~/^\#[0-9A-Fa-f]{6}$/) && (!$env{'form.resetall'})) { |
if (($color=~/^\#[0-9A-Fa-f]{6}$/) && (!$env{'form.resetall'})) { |
&Apache::lonnet::put('environment',{$entry => $color}); |
&Apache::lonnet::put('environment',{$entry => $color}); |
&Apache::lonnet::appenv('environment.'.$entry => $color); |
&Apache::lonnet::appenv({'environment.'.$entry => $color}); |
$message.='Set '.$colortypes{$item}.' to '.$color.'<br />'; |
$message.=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.$colortypes{$item}.'</i>','<tt>"'.$color.'"</tt>')) |
|
.'<br />'; |
} else { |
} else { |
&Apache::lonnet::del('environment',[$entry]); |
&Apache::lonnet::del('environment',[$entry]); |
&Apache::lonnet::delenv('environment\.'.$entry); |
&Apache::lonnet::delenv('environment.'.$entry); |
$message.='Reset '.$colortypes{$item}.'<br />'; |
$message.=&Apache::lonhtmlcommon::confirm_success(&mt('Reset [_1]','<i>'.$colortypes{$item}.'</i>')) |
|
.'<br />'; |
} |
} |
} |
} |
|
$message=&Apache::loncommon::confirmwrapper($message); |
|
|
my $now = time; |
my $now = time; |
&Apache::lonnet::put('environment',{'color.timestamp' => $now}); |
&Apache::lonnet::put('environment',{'color.timestamp' => $now}); |
&Apache::lonnet::appenv('environment.color.timestamp' => $now); |
&Apache::lonnet::appenv({'environment.color.timestamp' => $now}); |
|
|
$r->print(<<ENDVCCOL); |
&print_main_menu($r, $message); |
$message |
|
<form name="client" action="/adm/preferences" method="post"> |
|
<input type="hidden" name="action" value="changecolors" /> |
|
</form> |
|
ENDVCCOL |
|
} |
} |
|
|
###################################################### |
###################################################### |
Line 942 sub passwordchanger {
|
Line 1254 sub passwordchanger {
|
# This function is a bit of a mess.... |
# This function is a bit of a mess.... |
# Passwords are encrypted using londes.js (DES encryption) |
# Passwords are encrypted using londes.js (DES encryption) |
$errormessage = ($errormessage || ''); |
$errormessage = ($errormessage || ''); |
my ($user,$domain,$currentpass,$defdom); |
my ($user,$domain,$currentpass); |
|
&Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=changepass', |
|
text => 'Change Password'}); |
|
unless ($caller eq 'reset_by_email') { |
|
$r->print(Apache::loncommon::start_page('Personal Data')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change Password')); |
|
} |
|
my ($blocked,$blocktext) = |
|
&Apache::loncommon::blocking_status('passwd'); |
|
if ($blocked) { |
|
$r->print('<p class="LC_warning">'.$blocktext.'</p>'); |
|
return; |
|
} |
if ((!defined($caller)) || ($caller eq 'preferences')) { |
if ((!defined($caller)) || ($caller eq 'preferences')) { |
$user = $env{'user.name'}; |
$user = $env{'user.name'}; |
$domain = $env{'user.domain'}; |
$domain = $env{'user.domain'}; |
Line 950 sub passwordchanger {
|
Line 1275 sub passwordchanger {
|
$caller = 'preferences'; |
$caller = 'preferences'; |
} |
} |
} elsif ($caller eq 'reset_by_email') { |
} elsif ($caller eq 'reset_by_email') { |
$defdom = $r->dir_config('lonDefDomain'); |
|
my %data = &Apache::lonnet::tmpget($mailtoken); |
my %data = &Apache::lonnet::tmpget($mailtoken); |
if (keys(%data) == 0) { |
if (keys(%data) == 0) { |
$r->print(&mt('Sorry, the URL you provided to complete the reset of your password was invalid. Either the token included in the URL has been deleted or the URL you provided was invalid. Please submit a <a href="/adm/resetpw">new request</a> for a password reset, and follow the link to the new URL included in the e-mail that will be sent to you, to allow you to enter a new password.')); |
$r->print( |
|
'<p class="LC_warning">' |
|
.&mt('Sorry, the URL you provided to complete the reset of your password was invalid. Either the token included in the URL has been deleted or the URL you provided was invalid. Please submit a [_1]new request[_2] for a password reset, and follow the link to the new URL included in the e-mail that will be sent to you, to allow you to enter a new password.' |
|
,'<a href="/adm/resetpw">','</a>') |
|
.'</p>' |
|
); |
return; |
return; |
} |
} |
if (defined($data{time})) { |
if (defined($data{time})) { |
Line 962 sub passwordchanger {
|
Line 1291 sub passwordchanger {
|
$domain = $data{'domain'}; |
$domain = $data{'domain'}; |
$currentpass = $data{'temppasswd'}; |
$currentpass = $data{'temppasswd'}; |
} else { |
} else { |
$r->print(&mt('Sorry, the token generated when you requested a password reset has expired.').'<br />'); |
$r->print( |
|
'<p class="LC_warning">' |
|
.&mt('Sorry, the token generated when you requested' |
|
.' a password reset has expired.') |
|
.'</p>' |
|
); |
return; |
return; |
} |
} |
} else { |
} else { |
$r->print(&mt('Sorry, the URL generated when you requested reset of your password contained incomplete information.').'<br />'); |
$r->print( |
|
'<p class="LC_warning">' |
|
.&mt('Sorry, the URL generated when you requested reset of' |
|
.' your password contained incomplete information.') |
|
.'</p>' |
|
); |
return; |
return; |
} |
} |
} else { |
if (&Apache::lonnet::domain($domain) eq '') { |
$r->print(&mt('Page requested in unexpected context').'<br />'); |
$domain = $r->dir_config('lonDefDomain'); |
|
} |
|
} else { |
|
$r->print( |
|
'<p class="LC_error">' |
|
.&mt('Page requested in unexpected context') |
|
.'</p>' |
|
); |
return; |
return; |
} |
} |
my $currentauth=&Apache::lonnet::queryauthenticate($user,$domain); |
my $currentauth=&Apache::lonnet::queryauthenticate($user,$domain); |
Line 978 sub passwordchanger {
|
Line 1324 sub passwordchanger {
|
return if ($currentauth !~ /^(unix|internal):/); |
return if ($currentauth !~ /^(unix|internal):/); |
# |
# |
# Generate keys |
# Generate keys |
my ($lkey_cpass ,$ukey_cpass ) = &des_keys(); |
my ($lkey_cpass ,$ukey_cpass ) = &Apache::loncommon::des_keys(); |
my ($lkey_npass1,$ukey_npass1) = &des_keys(); |
my ($lkey_npass1,$ukey_npass1) = &Apache::loncommon::des_keys(); |
my ($lkey_npass2,$ukey_npass2) = &des_keys(); |
my ($lkey_npass2,$ukey_npass2) = &Apache::loncommon::des_keys(); |
# Store the keys in the log files |
# Store the keys in the log files |
my $lonhost = $r->dir_config('lonHostID'); |
my $lonhost = $r->dir_config('lonHostID'); |
my $logtoken=Apache::lonnet::reply('tmpput:' |
my $logtoken=Apache::lonnet::reply('tmpput:' |
Line 1013 $errormessage
|
Line 1359 $errormessage
|
crappy browser --> |
crappy browser --> |
ENDFORM |
ENDFORM |
$r->print(&server_form($logtoken,$caller,$mailtoken)); |
$r->print(&server_form($logtoken,$caller,$mailtoken)); |
$r->print(&client_form($caller,\%hexkey,$currentpass,$defdom)); |
$r->print(&client_form($caller,\%hexkey,$currentpass,$domain)); |
|
|
# |
# |
return; |
return; |
Line 1022 ENDFORM
|
Line 1368 ENDFORM
|
sub jscript_send { |
sub jscript_send { |
my ($caller) = @_; |
my ($caller) = @_; |
my $output = qq| |
my $output = qq| |
<script language="JavaScript"> |
<script type="text/javascript" language="JavaScript"> |
|
|
function send() { |
function send() { |
uextkey=this.document.client.elements.ukey_cpass.value; |
uextkey=this.document.client.elements.ukey_cpass.value; |
Line 1050 sub jscript_send {
|
Line 1396 sub jscript_send {
|
this.document.client.elements.uname.value; |
this.document.client.elements.uname.value; |
this.document.pserver.elements.udom.value = |
this.document.pserver.elements.udom.value = |
this.document.client.elements.udom.options[this.document.client.elements.udom.selectedIndex].value; |
this.document.client.elements.udom.options[this.document.client.elements.udom.selectedIndex].value; |
|
this.document.pserver.elements.email.value = |
|
this.document.client.elements.email.value; |
|; |
|; |
} |
} |
$ output .= qq| |
$ output .= qq| |
Line 1062 sub jscript_send {
|
Line 1410 sub jscript_send {
|
sub client_form { |
sub client_form { |
my ($caller,$hexkey,$currentpass,$defdom) = @_; |
my ($caller,$hexkey,$currentpass,$defdom) = @_; |
my %lt=&Apache::lonlocal::texthash( |
my %lt=&Apache::lonlocal::texthash( |
'email' => 'EMail Address', |
'email' => 'E-mail Address', |
'username' => 'Username', |
'username' => 'Username', |
'domain' => 'Domain', |
'domain' => 'Domain', |
'currentpass' => 'Current Password', |
'currentpass' => 'Current Password', |
'newpass' => 'New Password', |
'newpass' => 'New Password', |
'confirmpass' => 'Confirm Password', |
'confirmpass' => 'Confirm Password', |
'changepass' => 'Change Password'); |
'changepass' => 'Save', |
|
); |
|
|
my $output = qq| |
my $output = '<form name="client" action="">' |
<form name="client" > |
.&Apache::lonhtmlcommon::start_pick_box(); |
<table> |
|
|; |
|
if ($caller eq 'reset_by_email') { |
if ($caller eq 'reset_by_email') { |
$output .= qq| |
$output .= &Apache::lonhtmlcommon::row_title( |
<tr><td class="LC_preferences_labeltext"><label for="email">$lt{'email'}</label>:</td> |
'<label for="email">'.$lt{'email'}.'</label>') |
<td><input type="text" name="email" size="30" /> </td></tr> |
.'<input type="text" name="email" size="30" />' |
<tr><td class="LC_preferences_labeltext"><label for="uname">$lt{'username'}</label>:</td> |
.&Apache::lonhtmlcommon::row_closure() |
<td> |
.&Apache::lonhtmlcommon::row_title( |
<input type="text" name="uname" size="15" /> |
'<label for="uname">'.$lt{'username'}.'</label>') |
<input type="hidden" name="currentpass" value="$currentpass" /> |
.'<input type="text" name="uname" size="15" />' |
</td></tr> |
.'<input type="hidden" name="currentpass" value="'.$currentpass.'" />' |
<tr><td class="LC_preferences_labeltext"><label for="udom">$lt{'udom'}</label>:</td> |
.&Apache::lonhtmlcommon::row_closure() |
<td> |
.&Apache::lonhtmlcommon::row_title( |
|; |
'<label for="udom">'.$lt{'domain'}.'</label>') |
$output .= &Apache::loncommon::select_dom_form($defdom,'udom').' |
.&Apache::loncommon::select_dom_form($defdom,'udom') |
</td> |
.&Apache::lonhtmlcommon::row_closure(); |
</tr> |
|
'; |
|
} else { |
} else { |
$output .= qq| |
$output .= &Apache::lonhtmlcommon::row_title( |
<tr><td class="LC_preferences_labeltext"><label for="currentpass">$lt{'currentpass'}</label></td> |
'<label for="currentpass">'.$lt{'currentpass'}.'</label>') |
<td><input type="password" name="currentpass" size="10"/> </td></tr> |
.'<input type="password" name="currentpass" size="10"/>' |
|; |
.&Apache::lonhtmlcommon::row_closure(); |
} |
} |
$output .= <<"ENDFORM"; |
$output .= &Apache::lonhtmlcommon::row_title( |
<tr><td class="LC_preferences_labeltext"><label for="newpass_1">$lt{'newpass'}</label></td> |
'<label for="newpass_1">'.$lt{'newpass'}.'</label>') |
<td><input type="password" name="newpass_1" size="10" /> </td></tr> |
.'<input type="password" name="newpass_1" size="10" />' |
<tr><td class="LC_preferences_labeltext"><label for="newpass_2">$lt{'confirmpass'}</label></td> |
.&Apache::lonhtmlcommon::row_closure() |
<td><input type="password" name="newpass_2" size="10" /> </td></tr> |
.&Apache::lonhtmlcommon::row_title( |
<tr><td colspan="2" align="center"> |
'<label for="newpass_2">'.$lt{'confirmpass'}.'</label>') |
<input type="button" value="$lt{'changepass'}" onClick="send();"> |
.'<input type="password" name="newpass_2" size="10" />' |
</table> |
.&Apache::lonhtmlcommon::row_closure(1) |
|
.&Apache::lonhtmlcommon::end_pick_box(); |
|
$output .= '<p><input type="button" value="'.$lt{'changepass'}.'" onclick="send();" /></p>' |
|
.qq| |
<input type="hidden" name="ukey_cpass" value="$hexkey->{'ukey_cpass'}" /> |
<input type="hidden" name="ukey_cpass" value="$hexkey->{'ukey_cpass'}" /> |
<input type="hidden" name="lkey_cpass" value="$hexkey->{'lkey_cpass'}" /> |
<input type="hidden" name="lkey_cpass" value="$hexkey->{'lkey_cpass'}" /> |
<input type="hidden" name="ukey_npass1" value="$hexkey->{'ukey_npass1'}" /> |
<input type="hidden" name="ukey_npass1" value="$hexkey->{'ukey_npass1'}" /> |
Line 1112 sub client_form {
|
Line 1460 sub client_form {
|
<input type="hidden" name="lkey_npass2" value="$hexkey->{'lkey_npass2'}" /> |
<input type="hidden" name="lkey_npass2" value="$hexkey->{'lkey_npass2'}" /> |
</form> |
</form> |
</p> |
</p> |
ENDFORM |
|; |
return $output; |
return $output; |
} |
} |
|
|
Line 1134 sub server_form {
|
Line 1482 sub server_form {
|
<input type="hidden" name="token" value="$mailtoken" /> |
<input type="hidden" name="token" value="$mailtoken" /> |
<input type="hidden" name="uname" value="" /> |
<input type="hidden" name="uname" value="" /> |
<input type="hidden" name="udom" value="" /> |
<input type="hidden" name="udom" value="" /> |
|
<input type="hidden" name="email" value="" /> |
|
|
|; |
|; |
} |
} |
Line 1147 sub server_form {
|
Line 1496 sub server_form {
|
sub verify_and_change_password { |
sub verify_and_change_password { |
my ($r,$caller,$mailtoken) = @_; |
my ($r,$caller,$mailtoken) = @_; |
my ($user,$domain,$homeserver); |
my ($user,$domain,$homeserver); |
|
my ($blocked,$blocktext) = |
|
&Apache::loncommon::blocking_status('passwd'); |
|
if ($blocked) { |
|
$r->print('<p class="LC_warning">'.$blocktext.'</p>'); |
|
return; |
|
} |
if ($caller eq 'reset_by_email') { |
if ($caller eq 'reset_by_email') { |
$user = $env{'form.uname'}; |
$user = $env{'form.uname'}; |
$domain = $env{'form.udom'}; |
$domain = $env{'form.udom'}; |
Line 1216 ENDERROR
|
Line 1571 ENDERROR
|
} |
} |
my ($ckey,$n1key,$n2key)=split(/&/,$tmpinfo); |
my ($ckey,$n1key,$n2key)=split(/&/,$tmpinfo); |
# |
# |
$currentpass = &des_decrypt($ckey ,$currentpass); |
$currentpass = &Apache::loncommon::des_decrypt($ckey ,$currentpass); |
$newpass1 = &des_decrypt($n1key,$newpass1); |
$newpass1 = &Apache::loncommon::des_decrypt($n1key,$newpass1); |
$newpass2 = &des_decrypt($n2key,$newpass2); |
$newpass2 = &Apache::loncommon::des_decrypt($n2key,$newpass2); |
# |
# |
if ($caller eq 'reset_by_email') { |
if ($caller eq 'reset_by_email') { |
my %data = &Apache::lonnet::tmpget($mailtoken); |
my %data = &Apache::lonnet::tmpget($mailtoken); |
|
if (keys(%data) == 0) { |
|
&passwordchanger($r, |
|
'<span class="LC_error">'. |
|
&mt('Could not verify current authentication.').' '. |
|
&mt('Please try again.').'</span>',$caller,$mailtoken); |
|
return 1; |
|
} |
if ($currentpass ne $data{'temppasswd'}) { |
if ($currentpass ne $data{'temppasswd'}) { |
&passwordchanger($r, |
&passwordchanger($r, |
'<span class="LC_error">'. |
'<span class="LC_error">'. |
&mt('Could not verify current authentication').'. '. |
&mt('Could not verify current authentication.').' '. |
&mt('Please try again').'.</span>',$caller,$mailtoken); |
&mt('Please try again.').'</span>',$caller,$mailtoken); |
return 1; |
return 1; |
} |
} |
} |
} |
if ($newpass1 ne $newpass2) { |
if ($newpass1 ne $newpass2) { |
&passwordchanger($r, |
&passwordchanger($r, |
'<span class="LC_error">'. |
'<span class="LC_warning">'. |
&mt('The new passwords you entered do not match').'. '. |
&mt('The new passwords you entered do not match.').' '. |
&mt('Please try again').'.</span>',$caller,$mailtoken); |
&mt('Please try again.').'</span>',$caller,$mailtoken); |
return 1; |
return 1; |
} |
} |
if (length($newpass1) < 7) { |
if (length($newpass1) < 7) { |
&passwordchanger($r, |
&passwordchanger($r, |
'<span class="LC_error">'. |
'<span class="LC_warning">'. |
&mt('Passwords must be a minimum of 7 characters long').'. '. |
&mt('Passwords must be a minimum of 7 characters long.').' '. |
&mt('Please try again').'</span>.',$caller,$mailtoken); |
&mt('Please try again.').'</span>',$caller,$mailtoken); |
return 1; |
return 1; |
} |
} |
# |
# |
Line 1252 ENDERROR
|
Line 1614 ENDERROR
|
} |
} |
if ($badpassword) { |
if ($badpassword) { |
# I can't figure out how to enter bad characters on my browser. |
# I can't figure out how to enter bad characters on my browser. |
my $errormessage ='<span class="LC_error">'. |
my $errormessage ='<span class="LC_warning">'. |
&mt('The password you entered contained illegal characters').'.<br />'. |
&mt('The password you entered contained illegal characters.').'<br />'. |
&mt('Valid characters are').(<<"ENDERROR"); |
&mt('Valid characters are').(<<"ENDERROR"); |
: space and <br /> |
: space and <br /> |
<pre> |
<pre> |
Line 1269 ENDERROR
|
Line 1631 ENDERROR
|
my $result = &Apache::lonnet::changepass |
my $result = &Apache::lonnet::changepass |
($user,$domain,$currentpass,$newpass1,$homeserver,$caller); |
($user,$domain,$currentpass,$newpass1,$homeserver,$caller); |
# Inform the user the password has (not?) been changed |
# Inform the user the password has (not?) been changed |
|
my $message; |
if ($result =~ /^ok$/) { |
if ($result =~ /^ok$/) { |
$r->print("<h3>".&mt('The password for [_1] was successfully changed',$user)."</h3>"); |
$message = &Apache::lonhtmlcommon::confirm_success(&mt('The password for user [_1] was successfully changed.','<i>'.$user.'</i>')); |
|
$message = &Apache::loncommon::confirmwrapper($message); |
|
if ($caller eq 'reset_by_email') { |
|
$r->print($message.'<br />'); |
|
} else { |
|
&print_main_menu($r, $message); |
|
} |
} else { |
} else { |
# error error: run in circles, scream and shout |
# error error: run in circles, scream and shout |
$r->print("<h3><span class='LC_error'>".&mt("The password for [_1] was not changed",$user)."</span></h3>". |
if ($caller eq 'reset_by_email') { |
&mt('Please make sure your old password was entered correctly').'.'); |
if (!$result) { |
return 1; |
return 1; |
|
} else { |
|
return $result; |
|
} |
|
} else { |
|
$message = &Apache::lonhtmlcommon::confirm_success( |
|
&mt("The password for user [_1] was not changed.",'<i>'.$user.'</i>').' '.&mt('Please make sure your old password was entered correctly.'),1); |
|
$message=&Apache::loncommon::confirmwrapper($message); |
|
&print_main_menu($r, $message); |
|
} |
} |
} |
return; |
return; |
} |
} |
Line 1285 ENDERROR
|
Line 1663 ENDERROR
|
################################################################ |
################################################################ |
sub discussionchanger { |
sub discussionchanger { |
my $r = shift; |
my $r = shift; |
|
Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=changediscussions', |
|
text => 'Change Discussion Preferences'}); |
|
$r->print(Apache::loncommon::start_page('Change Discussion Preferences')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change Discussion Preferences')); |
my $user = $env{'user.name'}; |
my $user = $env{'user.name'}; |
my $domain = $env{'user.domain'}; |
my $domain = $env{'user.domain'}; |
my %userenv = &Apache::lonnet::get |
my %userenv = &Apache::lonnet::get |
Line 1298 sub discussionchanger {
|
Line 1681 sub discussionchanger {
|
} |
} |
} |
} |
if (defined($userenv{'discmarkread'})) { |
if (defined($userenv{'discmarkread'})) { |
unless ($userenv{'discdisplay'} eq '') { |
unless ($userenv{'discmarkread'} eq '') { |
$discmark = $userenv{'discmarkread'}; |
$discmark = $userenv{'discmarkread'}; |
} |
} |
} |
} |
Line 1313 sub discussionchanger {
|
Line 1696 sub discussionchanger {
|
'pref' => 'Display Preference', |
'pref' => 'Display Preference', |
'curr' => 'Current setting ', |
'curr' => 'Current setting ', |
'actn' => 'Action', |
'actn' => 'Action', |
'sdpf' => 'Set display preferences for discussion posts for both bulletin boards and individual resources in all your courses.', |
'sdpf' => 'Set display preferences for discussion posts for both discussion boards and individual resources in all your courses.', |
'prca' => 'Preferences can be set that determine', |
'prca' => 'Preferences can be set that determine', |
'whpo' => 'Which posts are displayed when you display a bulletin board or resource, and', |
'whpo' => 'Which posts are displayed when you display a discussion board or resource, and', |
'unwh' => 'Under what circumstances posts are identfied as "New"', |
'unwh' => 'Under what circumstances posts are identified as "NEW"', |
'allposts' => 'All posts', |
'allposts' => 'All posts', |
'unread' => 'New posts only', |
'unread' => 'New posts only', |
'ondisp' => 'Once displayed', |
'ondisp' => 'Once displayed', |
'onmark' => 'Once marked as read', |
'onmark' => 'Once marked not NEW', |
'disa' => 'Posts displayed?', |
'disa' => 'Posts displayed?', |
'npmr' => 'New posts cease to be identified as "New"?', |
'npmr' => 'New posts cease to be identified as "NEW"?', |
'thde' => 'The preferences you set here can be overridden within each individual discussion.', |
'thde' => 'The preferences you set here can be overridden within each individual discussion.', |
'chgt' => 'Change to ' |
'chgt' => 'Change to ' |
); |
); |
Line 1342 sub discussionchanger {
|
Line 1725 sub discussionchanger {
|
$currmark = $lt{'ondisp'}; |
$currmark = $lt{'ondisp'}; |
$newmark = 'onmark'; |
$newmark = 'onmark'; |
} |
} |
|
|
$r->print(<<"END"); |
$r->print(<<"END"); |
<form name="prefs" action="/adm/preferences" method="post"> |
<form name="prefs" action="/adm/preferences" method="post"> |
<input type="hidden" name="action" value="verify_and_change_discussion" /> |
<input type="hidden" name="action" value="verify_and_change_discussion" /> |
<br /> |
<br /> |
$lt{'sdpf'}<br /> $lt{'prca'} <ol><li>$lt{'whpo'}</li><li>$lt{'unwh'}</li></ol> |
$lt{'sdpf'}<br /> $lt{'prca'} <ol><li>$lt{'whpo'}</li><li>$lt{'unwh'}</li></ol> |
<br /> |
|
<br /> |
|
END |
END |
|
|
|
$r->print('<p class="LC_info">'.$lt{'thde'}.'</p>'); |
|
|
$r->print(&Apache::loncommon::start_data_table()); |
$r->print(&Apache::loncommon::start_data_table()); |
$r->print(<<"END"); |
$r->print(<<"END"); |
<tr> |
<tr> |
Line 1375 END
|
Line 1759 END
|
END |
END |
$r->print(&Apache::loncommon::end_data_table_row(). |
$r->print(&Apache::loncommon::end_data_table_row(). |
&Apache::loncommon::end_data_table()); |
&Apache::loncommon::end_data_table()); |
$r->print(<<"END"); |
|
<br /> |
$r->print('<br />' |
<br /> |
.'<input type="submit" name="sub" value="'.&mt('Save').'" />' |
<input type="submit" name="sub" value="Save Changes" /> |
.'</form>' |
<br /> |
); |
<br /> |
|
Note: $lt{'thde'} |
|
</form> |
|
END |
|
} |
} |
|
|
sub verify_and_change_discussion { |
sub verify_and_change_discussion { |
Line 1394 sub verify_and_change_discussion {
|
Line 1774 sub verify_and_change_discussion {
|
if (defined($env{'form.discdisp'}) ) { |
if (defined($env{'form.discdisp'}) ) { |
my $newdisp = $env{'form.newdisp'}; |
my $newdisp = $env{'form.newdisp'}; |
if ($newdisp eq 'unread') { |
if ($newdisp eq 'unread') { |
$message .='In discussions: only new posts will be displayed.<br />'; |
$message .=&Apache::lonhtmlcommon::confirm_success(&mt('In discussions: only new posts will be displayed.')).'<br />'; |
&Apache::lonnet::put('environment',{'discdisplay' => $newdisp}); |
&Apache::lonnet::put('environment',{'discdisplay' => $newdisp}); |
&Apache::lonnet::appenv('environment.discdisplay' => $newdisp); |
&Apache::lonnet::appenv({'environment.discdisplay' => $newdisp}); |
} else { |
} else { |
$message .= 'In discussions: all posts will be displayed.<br />'; |
$message .= &Apache::lonhtmlcommon::confirm_success(&mt('In discussions: all posts will be displayed.')).'<br />'; |
&Apache::lonnet::del('environment',['discdisplay']); |
&Apache::lonnet::del('environment',['discdisplay']); |
&Apache::lonnet::delenv('environment\.discdisplay'); |
&Apache::lonnet::delenv('environment.discdisplay'); |
} |
} |
} |
} |
if (defined($env{'form.discmark'}) ) { |
if (defined($env{'form.discmark'}) ) { |
my $newmark = $env{'form.newmark'}; |
my $newmark = $env{'form.newmark'}; |
if ($newmark eq 'ondisp') { |
if ($newmark eq 'ondisp') { |
$message.='In discussions: new posts will be cease to be identified as "new" after display.<br />'; |
$message.=&Apache::lonhtmlcommon::confirm_success(&mt('In discussions: new posts will cease to be identified as "NEW" after display.')).'<br />'; |
&Apache::lonnet::put('environment',{'discmarkread' => $newmark}); |
&Apache::lonnet::put('environment',{'discmarkread' => $newmark}); |
&Apache::lonnet::appenv('environment.discmarkread' => $newmark); |
&Apache::lonnet::appenv({'environment.discmarkread' => $newmark}); |
} else { |
} else { |
$message.='In discussions: posts will be identified as "new" until marked as read by the reader.<br />'; |
$message.=&Apache::lonhtmlcommon::confirm_success(&mt('In discussions: posts will be identified as "NEW" until marked as not "NEW".')).'<br />'; |
&Apache::lonnet::del('environment',['discmarkread']); |
&Apache::lonnet::del('environment',['discmarkread']); |
&Apache::lonnet::delenv('environment\.discmarkread'); |
&Apache::lonnet::delenv('environment.discmarkread'); |
} |
} |
} |
} |
$r->print(<<ENDVCSCREEN); |
$message=&Apache::loncommon::confirmwrapper($message); |
$message |
&print_main_menu($r, $message); |
ENDVCSCREEN |
|
} |
} |
|
|
################################################################ |
################################################################ |
Line 1425 ENDVCSCREEN
|
Line 1804 ENDVCSCREEN
|
################################################################ |
################################################################ |
sub coursedisplaychanger { |
sub coursedisplaychanger { |
my $r = shift; |
my $r = shift; |
|
&Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=changecourseinit', |
|
text => 'Change Course Init. Pref.'}); |
|
$r->print(Apache::loncommon::start_page('Change Course Initialization Preference')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change Course Init. Pref.')); |
my $user = $env{'user.name'}; |
my $user = $env{'user.name'}; |
my $domain = $env{'user.domain'}; |
my $domain = $env{'user.domain'}; |
my %userenv = &Apache::lonnet::get('environment',['course_init_display']); |
my %userenv = &Apache::lonnet::get('environment',['course_init_display']); |
Line 1438 sub coursedisplaychanger {
|
Line 1822 sub coursedisplaychanger {
|
$whatsnewselect = ''; |
$whatsnewselect = ''; |
} |
} |
} |
} |
my %pagenames = ( |
my %pagenames = &Apache::lonlocal::texthash( |
firstres => 'First resource', |
firstres => 'First resource', |
whatsnew => "What's new page", |
whatsnew => "What's New Page", |
); |
); |
my $whatsnew_off=&mt('Display the [_1] in the course.','<b>first resource</b>'); |
my $whatsnew_off=&mt('Display the [_1]first resource[_2] in the course.','<b>','</b>'); |
my $whatsnew_on=&mt('Display the "[_1]" page - a summary of items in the course which require attention.',"<b>What's New</b>"); |
my $whatsnew_on=&mt("Display the [_1]What's New Page[_2] - a summary of items in the course which require attention.",'<b>','</b>'); |
|
|
$r->print('<br /><b>'.&mt('Set the default page to be displayed when you select a course role').'</b> '.&mt('(Currently: [_1])',$pagenames{$currvalue}).'<br />'.&mt('The global user preference you set for your courses can be overridden in an individual course by setting a course specific setting via the "[_1]" page in the course',"<i>What's New</i>").'<br /><br />'); |
$r->print('<br /><b>' |
|
.&mt('Set the default page to be displayed when you select a course role') |
|
.'</b> ' |
|
.&mt('(Currently: [_1])',$pagenames{$currvalue}) |
|
.'<br />' |
|
.&mt("The global user preference you set for your courses can be overridden in an individual course by setting a course specific setting via the [_1]What's New Page[_2] in the course.",'<i>','</i>') |
|
.'<br /><br />' |
|
); |
$r->print(<<ENDLSCREEN); |
$r->print(<<ENDLSCREEN); |
<form name="prefs" action="/adm/preferences" method="post"> |
<form name="prefs" action="/adm/preferences" method="post"> |
<input type="hidden" name="action" value="verify_and_change_coursepage" /> |
<input type="hidden" name="action" value="verify_and_change_coursepage" /> |
Line 1453 sub coursedisplaychanger {
|
Line 1844 sub coursedisplaychanger {
|
<label><input type="radio" name="newdisp" value="firstres" $firstselect /> $whatsnew_off</label><br /> |
<label><input type="radio" name="newdisp" value="firstres" $firstselect /> $whatsnew_off</label><br /> |
<label><input type="radio" name="newdisp" value="whatsnew" $whatsnewselect /> $whatsnew_on</label><input type="hidden" name="refpage" value="$env{'form.refpage'}" /> |
<label><input type="radio" name="newdisp" value="whatsnew" $whatsnewselect /> $whatsnew_on</label><input type="hidden" name="refpage" value="$env{'form.refpage'}" /> |
ENDLSCREEN |
ENDLSCREEN |
$r->print('<br /><br /><input type="submit" value="'.&mt('Change').'" /> |
$r->print('<br /><br /><input type="submit" value="'.&mt('Save').'" /> |
</form>'); |
</form>'); |
} |
} |
|
|
Line 1466 sub verify_and_change_coursepage {
|
Line 1857 sub verify_and_change_coursepage {
|
'ywbt' => 'you will be taken to the start of the course.', |
'ywbt' => 'you will be taken to the start of the course.', |
'apwb' => 'a page will be displayed that lists items in the course that may require action from you.', |
'apwb' => 'a page will be displayed that lists items in the course that may require action from you.', |
'gtts' => 'Go to the start of the course', |
'gtts' => 'Go to the start of the course', |
'dasp' => "Display the What's New page listing course action items", |
'dasp' => "Display the What's New Page", |
); |
); |
my $newdisp = $env{'form.newdisp'}; |
my $newdisp = $env{'form.newdisp'}; |
$message = '<b>'.$lt{'defs'}.'</b>: '.$lt{'when'}.', '; |
$message = '<b>'.$lt{'defs'}.'</b>: '.$lt{'when'}.', '; |
if ($newdisp eq 'firstres') { |
if ($newdisp eq 'firstres') { |
$message .= $lt{'ywbt'}.'<br />'; |
$message .= $lt{'ywbt'}.'<br />'; |
&Apache::lonnet::put('environment',{'course_init_display' => $newdisp}); |
&Apache::lonnet::put('environment',{'course_init_display' => $newdisp}); |
&Apache::lonnet::appenv('environment.course_init_display' => $newdisp); |
&Apache::lonnet::appenv({'environment.course_init_display' => $newdisp}); |
} else { |
} else { |
$message .= $lt{'apwb'}.'<br />'; |
$message .= $lt{'apwb'}.'<br />'; |
&Apache::lonnet::del('environment',['course_init_display']); |
&Apache::lonnet::del('environment',['course_init_display']); |
&Apache::lonnet::delenv('environment\.course_init_display'); |
&Apache::lonnet::delenv('environment.course_init_display'); |
} |
} |
my $refpage = $env{'form.refpage'}; |
my $refpage = $env{'form.refpage'}; |
if (($env{'request.course.fn'}) && ($env{'request.course.id'})) { |
if (($env{'request.course.fn'}) && ($env{'request.course.id'})) { |
Line 1486 sub verify_and_change_coursepage {
|
Line 1877 sub verify_and_change_coursepage {
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
my ($furl,$ferr)= |
my ($furl,$ferr)= |
&Apache::lonuserstate::readmap($cdom.'/'.$cnum); |
&Apache::lonuserstate::readmap($cdom.'/'.$cnum); |
$message .= '<br /><font size="+1"><a href="'.$furl.'">'.$lt{'gtts'}.' <i>'.&mt('now').'</i></a></font>'; |
$message .= '<br /><a href="'.$furl.'">'.$lt{'gtts'}.' <i>'.&mt('now').'</i></a>'; |
} else { |
} else { |
$message .= '<br /><font size="+1"><a href="/adm/whatsnew?refpage='. |
$message .= '<br /><a href="/adm/whatsnew?refpage='. |
$refpage.'">'.$lt{'dasp'}.'</a></font>'; |
$refpage.'">'.$lt{'dasp'}.'</a>'; |
} |
} |
} |
} |
$r->print(<<ENDVCSCREEN); |
$message = &Apache::lonhtmlcommon::confirm_success($message); |
$message |
$message = &Apache::loncommon::confirmwrapper($message); |
<br /><br /> |
&print_main_menu($r,$message); |
ENDVCSCREEN |
|
} |
} |
|
|
|
sub author_space_settings { |
|
my $r = shift; |
|
&Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=authorsettings', |
|
text => 'Authoring Space Settings'}); |
|
my $user = $env{'user.name'}; |
|
my $domain = $env{'user.domain'}; |
|
my %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au','ca','aa']); |
|
if (keys(%author_roles) > 0) { |
|
$r->print(Apache::loncommon::start_page('Authoring Space Settings')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Authoring Space Settings')); |
|
my %userenv = &Apache::lonnet::get('environment',['nocodemirror']); |
|
my $constchecked=''; |
|
if ($env{'environment.nocodemirror'}) { |
|
$constchecked=' checked="checked"'; |
|
} |
|
my $text=&mt('By default, CodeMirror an editor with advanced functionality for editing code is activated for authors.'); |
|
my $cmoff=&mt('Deactivate CodeMirror. This can improve performance on slow computers and accessibility.'); |
|
my $change=&mt('Save'); |
|
$r->print(<<ENDSCREEN); |
|
<form name="prefs" action="/adm/preferences" method="post"> |
|
<input type="hidden" name="action" value="change_authoring_settings" /> |
|
$text<br /> |
|
<label><input type="checkbox" name="cmoff"$constchecked />$cmoff</label><br /> |
|
<input type="submit" value="$change" /> |
|
</form> |
|
ENDSCREEN |
|
} |
|
} |
|
|
|
sub change_authoring_settings { |
|
my $r = shift; |
|
my $user = $env{'user.name'}; |
|
my $domain = $env{'user.domain'}; |
|
my %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au','ca','aa']); |
|
if (keys(%author_roles) > 0) { |
|
my %ausettings=('environment.nocodemirror' => ''); |
|
if ($env{'form.cmoff'}) { $ausettings{'environment.nocodemirror'}='yes'; } |
|
&Apache::lonnet::put('environment',\%ausettings); |
|
&Apache::lonnet::appenv({'environment.nocodemirror' => $ausettings{'environment.nocodemirror'}}); |
|
my $status=''; |
|
if ($ausettings{'environment.nocodemirror'} eq 'yes') { |
|
$status=&mt('on'); |
|
} else { |
|
$status=&mt('off'); |
|
} |
|
my $message=&Apache::lonhtmlcommon::confirm_success(&mt('Set [_1] to [_2]','<i>'.&mt('Deactivate CodeMirror in Authoring Space').'</i>','<tt>'.$status.'</tt>')); |
|
$message=&Apache::loncommon::confirmwrapper($message); |
|
&print_main_menu($r,$message); |
|
} |
|
} |
|
|
|
sub lockednameschanger { |
|
my $r = shift; |
|
&Apache::lonhtmlcommon::add_breadcrumb( |
|
{ href => '/adm/preferences?action=changelockednames', |
|
text => 'Automatic name changes'}); |
|
$r->print(Apache::loncommon::start_page('Automatic name changes')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Allow/disallow name updates')); |
|
my %userenv = &Apache::lonnet::get('environment',['lockedname']); |
|
my $lockedname=''; |
|
if (&can_toggle_namelocking()) { |
|
if ($userenv{'lockedname'}) { |
|
$lockedname = ' checked="checked"'; |
|
} |
|
my %updateable; |
|
my %domconfig = |
|
&Apache::lonnet::get_dom('configuration',['autoupdate'],$env{'user.domain'}); |
|
if (ref($domconfig{'autoupdate'}) eq 'HASH') { |
|
if ($domconfig{'autoupdate'}{'run'}) { |
|
my @inststatuses = split(':',$env{'environment.inststatus'}); |
|
unless (@inststatuses) { |
|
@inststatuses = ('default'); |
|
} |
|
%updateable = &updateable_userinfo($domconfig{'autoupdate'},\@inststatuses); |
|
} |
|
} |
|
if (keys(%updateable)) { |
|
my %longnames = &Apache::lonlocal::texthash ( |
|
firstname => 'First Name', |
|
middlename => 'Middle Name', |
|
lastname => 'Last Name', |
|
); |
|
my $text=&mt('By default, based on your institutional affiliation, your LON-CAPA account can be automatically updated nightly based on directory information from your institution.').'<br />'.&mt('The following may be updated, unless you disallow updates:'). |
|
'<ul>'; |
|
foreach my $item ('firstname','middlename','lastname') { |
|
if ($updateable{$item}) { |
|
$text .= '<li>'.$longnames{$item}.'</li>'; |
|
} |
|
} |
|
$text .= '</ul>'; |
|
my $locking=&mt('Disallow automatic updates to name information for your LON-CAPA account'); |
|
my $change=&mt('Save'); |
|
$r->print(<<ENDSCREEN); |
|
<form name="prefs" action="/adm/preferences" method="post"> |
|
<input type="hidden" name="action" value="verify_and_change_lockednames" /> |
|
$text<br /> |
|
<label><input type="checkbox" value="1" name="lockednames"$lockedname />$locking</label><br /> |
|
<input type="submit" value="$change" /> |
|
</form> |
|
ENDSCREEN |
|
} else { |
|
my $message = &mt('Based on your institutional affiliation no name information is automatically updated for your LON-CAPA account.'); |
|
&print_main_menu($r,$message); |
|
} |
|
} else { |
|
my $message = &mt('You are not permitted to set a user preference for automatic name updates for your LON-CAPA account.'); |
|
&print_main_menu($r,$message); |
|
} |
|
} |
|
|
|
sub verify_and_change_lockednames { |
|
my $r = shift; |
|
my $message; |
|
if (&can_toggle_namelocking()) { |
|
my $newlockedname = $env{'form.lockednames'}; |
|
$newlockedname =~ s/\D//g; |
|
my $currlockedname = $env{'environment.lockedname'}; |
|
if ($newlockedname ne $currlockedname) { |
|
if ($newlockedname) { |
|
if (&Apache::lonnet::put('environment',{lockedname => $newlockedname}) eq 'ok') { |
|
&Apache::lonnet::appenv({'environment.lockedname' => $newlockedname}); |
|
} |
|
} elsif (&Apache::lonnet::del('environment',['lockedname']) eq 'ok') { |
|
&Apache::lonnet::delenv('environment.lockedname'); |
|
} |
|
} |
|
my $status=''; |
|
if ($newlockedname) { |
|
$status=&mt('disallowed'); |
|
} else { |
|
$status=&mt('allowed'); |
|
} |
|
$message=&Apache::lonhtmlcommon::confirm_success(&mt('[_1] set to [_2]','<i>'.&mt('Automatic update of first, middle and last names if institutional directory information indicates changes').'</i>','<tt>'.$status.'</tt>')); |
|
$message=&Apache::loncommon::confirmwrapper($message); |
|
} |
|
&print_main_menu($r,$message); |
|
} |
|
|
|
sub print_main_menu { |
|
my ($r, $message) = @_; |
|
# Determine current authentication method |
|
my $user = $env{'user.name'}; |
|
my $domain = $env{'user.domain'}; |
|
my $currentauth=&Apache::lonnet::queryauthenticate($user,$domain); |
|
|
|
# build the data structure for menu generation |
|
my $aboutmeurl='/adm/'.$env{'user.domain'}.'/'.$env{'user.name'}.'/aboutme'; |
|
my $role = ($env{'user.adv'} ? 'Roles' : 'Course'); |
|
my %permissions; |
|
if (&Apache::lonnet::usertools_access($user,$domain,'aboutme')) { |
|
$permissions{'aboutme'} = 'F'; |
|
} |
|
my @menu= |
|
({ categorytitle=>'Personal Data', |
|
items =>[ |
|
{ linktext => 'Personal Information Page', |
|
url => $aboutmeurl, |
|
permission => $permissions{'aboutme'}, |
|
#help => 'Prefs_About_Me', |
|
icon => 'system-users.png', |
|
linktitle => 'Edit information about yourself that should be displayed on your public profile.' |
|
}, |
|
{ linktext => 'Screen Name', |
|
url => '/adm/preferences?action=changescreenname', |
|
permission => 'F', |
|
#help => 'Prefs_Screen_Name_Nickname', |
|
icon => 'preferences-desktop-font.png', |
|
linktitle => 'Change the name that is displayed in your posts.' |
|
}, |
|
] |
|
}, |
|
{ categorytitle=>'Content Display Settings', |
|
items =>[ |
|
{ linktext => 'Language', |
|
url => '/adm/preferences?action=changelanguages', |
|
permission => 'F', |
|
#help => 'Prefs_Language', |
|
icon => 'preferences-desktop-locale.png', |
|
linktitle => 'Choose the default language for this user.' |
|
}, |
|
{ linktext => $role.' Page', |
|
url => '/adm/preferences?action=changerolespref', |
|
permission => 'F', |
|
#help => '', |
|
icon => 'role_hotlist.png', |
|
linktitle => 'Configure the roles hotlist.' |
|
}, |
|
{ linktext => 'Math display settings', |
|
url => '/adm/preferences?action=changetexenginepref', |
|
permission => 'F', |
|
#help => '', |
|
icon => 'dismath.png', |
|
linktitle => 'Change how math is displayed.' |
|
}, |
|
] |
|
}, |
|
{ categorytitle=>'Page Display Settings', |
|
items =>[ |
|
{ linktext => 'Color Scheme', |
|
url => '/adm/preferences?action=changecolors', |
|
permission => 'F', |
|
#help => 'Change_Colors', |
|
icon => 'preferences-desktop-theme.png', |
|
linktitle => 'Change LON-CAPA default colors.' |
|
}, |
|
{ linktext => 'Menu Display', |
|
url => '/adm/preferences?action=changeicons', |
|
permission => 'F', |
|
#help => '', |
|
icon => 'preferences-system-windows.png', |
|
linktitle => 'Change whether the menus are displayed with icons or icons and text.' |
|
} |
|
] |
|
}, |
|
{ categorytitle=>'Messages & Notifications', |
|
items =>[ |
|
{ linktext => 'Messages & Notifications', |
|
url => '/adm/preferences?action=changemsgforward', |
|
permission => 'F', |
|
#help => 'Prefs_Messages', |
|
icon => 'mail-reply-all.png', |
|
linktitle => 'Change messageforwarding or notifications settings.' |
|
}, |
|
{ linktext => 'Discussion Display', |
|
url => '/adm/preferences?action=changediscussions', |
|
permission => 'F', |
|
#help => 'Change_Discussion_Display', |
|
icon => 'chat.png', |
|
linktitle => 'Set display preferences for discussion posts for both discussion boards and individual resources in all your courses.' |
|
}, |
|
] |
|
}, |
|
{ categorytitle=>'Other', |
|
items =>[ |
|
{ linktext => 'Register Response Devices ("Clickers")', |
|
url => '/adm/preferences?action=changeclicker', |
|
permission => 'F', |
|
#help => '', |
|
icon => 'network-workgroup.png', |
|
linktitle => 'Register your clicker.' |
|
}, |
|
] |
|
}, |
|
); |
|
|
|
if ($currentauth =~ /^(unix|internal):/) { |
|
push(@{ $menu[0]->{items} }, { |
|
linktext => 'Password', |
|
url => '/adm/preferences?action=changepass', |
|
permission => 'F', |
|
#help => 'Change_Password', |
|
icon => 'emblem-readonly.png', |
|
linktitle => 'Change your password.', |
|
}); |
|
} |
|
|
|
if (&can_toggle_namelocking()) { |
|
push(@{ $menu[0]->{items} }, { |
|
linktext => 'Automatic name changes', |
|
url => '/adm/preferences?action=changelockednames', |
|
permission => 'F', |
|
#help => '', |
|
icon => 'system-lock-screen.png', |
|
linktitle => 'Allow/disallow propagation of name changes from institutional directory service', |
|
}); |
|
} |
|
|
|
my %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au']); |
|
if (keys(%author_roles) > 0) { |
|
push(@{ $menu[4]->{items} }, { |
|
linktext => 'Restrict Domain Coordinator Access', |
|
url => '/adm/preferences?action=changedomcoord', |
|
permission => 'F', |
|
#help => '', |
|
icon => 'system-lock-screen.png', |
|
linktitle => 'Restrict domain coordinator access.', |
|
}); |
|
} |
|
|
|
if (&Apache::lonnet::allowed('whn',$env{'request.course.id'}) |
|
|| &Apache::lonnet::allowed('whn',$env{'request.course.id'}.'/' |
|
.$env{'request.course.sec'})) { |
|
push(@{ $menu[4]->{items} }, { |
|
linktext => 'Course Initialization', |
|
url => '/adm/preferences?action=changecourseinit', |
|
permission => 'F', |
|
#help => '', |
|
icon => 'course_ini.png', |
|
linktitle => 'Set the default page to be displayed when you select a course role.', |
|
}); |
|
|
|
} |
|
|
|
my %author_roles = &Apache::lonnet::get_my_roles($user,$domain,'userroles','',['au','ca','aa']); |
|
if (keys(%author_roles) > 0) { |
|
push(@{ $menu[4]->{items} }, { |
|
linktext => 'Authoring Space Configuration', |
|
url => '/adm/preferences?action=authorsettings', |
|
permission => 'F', |
|
icon => 'course_ini.png', |
|
linktitle => 'Settings for your authoring space.', |
|
}); |
|
} |
|
|
|
if (&can_toggle_debug()) { |
|
push(@{ $menu[4]->{items} }, { |
|
linktext => 'Toggle Debug Messages (Currently '.($env{'user.debug'} ? 'on)' : 'off)'), |
|
url => '/adm/preferences?action=debugtoggle', |
|
permission => 'F', |
|
#help => '', |
|
icon => 'blog.png', |
|
linktitle => 'Toggle Debug Messages.', |
|
}); |
|
} |
|
|
|
$r->print(&Apache::loncommon::start_page('My Space')); |
|
$r->print(Apache::lonhtmlcommon::breadcrumbs('Change Preferences')); |
|
$r->print($message); |
|
$r->print(Apache::lonhtmlcommon::generate_menu(@menu)); |
|
$r->print(Apache::loncommon::end_page()); |
|
} |
|
|
###################################################### |
###################################################### |
# other handler subroutines # |
# other handler subroutines # |
Line 1506 ENDVCSCREEN
|
Line 2218 ENDVCSCREEN
|
################################################################ |
################################################################ |
# Main handler # |
# Main handler # |
################################################################ |
################################################################ |
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
my $user = $env{'user.name'}; |
Apache::loncommon::content_type($r,'text/html'); |
my $domain = $env{'user.domain'}; |
|
&Apache::loncommon::content_type($r,'text/html'); |
|
# Some pages contain DES keys and should not be cached. |
# Some pages contain DES keys and should not be cached. |
&Apache::loncommon::no_cache($r); |
Apache::loncommon::no_cache($r); |
$r->send_http_header; |
$r->send_http_header; |
return OK if $r->header_only; |
return OK if $r->header_only; |
# |
# |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['action','wysiwyg','returnurl','refpage']); |
['action','wysiwyg','returnurl','refpage']); |
# |
# |
&Apache::lonhtmlcommon::clear_breadcrumbs(); |
Apache::lonhtmlcommon::clear_breadcrumbs(); |
&Apache::lonhtmlcommon::add_breadcrumb |
my ($brlink,$brtxt,$brhelp); |
({href => '/adm/preferences', |
if (($env{'form.action'} eq 'changerolespref') && ($env{'form.returnurl'} eq '/adm/roles')) { |
text => 'Set User Preferences'}); |
$brlink ='/adm/roles'; |
|
$brtxt = 'User Roles'; |
|
} else { |
|
$brlink ='/adm/preferences'; |
|
$brtxt = 'Set User Preferences'; |
|
$brhelp = 'Prefs_About_Me,Prefs_Language,Prefs_Screen_Name_Nickname,Change_Colors,Change_Password,Prefs_Messages,Change_Discussion_Display'; |
|
} |
|
Apache::lonhtmlcommon::add_breadcrumb |
|
({href => $brlink, |
|
text => $brtxt, |
|
help => $brhelp,}); |
|
if(!exists $env{'form.action'}) { |
|
&print_main_menu($r); |
|
}elsif($env{'form.action'} eq 'changepass'){ |
|
&passwordchanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_pass'){ |
|
&verify_and_change_password($r); |
|
}elsif($env{'form.action'} eq 'changescreenname'){ |
|
&screennamechanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_screenname'){ |
|
&verify_and_change_screenname($r); |
|
}elsif($env{'form.action'} eq 'changemsgforward'){ |
|
&msgforwardchanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_msgforward'){ |
|
&verify_and_change_msgforward($r); |
|
}elsif($env{'form.action'} eq 'changecolors'){ |
|
&colorschanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_colors'){ |
|
&verify_and_change_colors($r); |
|
}elsif($env{'form.action'} eq 'changelanguages'){ |
|
&languagechanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_languages'){ |
|
&verify_and_change_languages($r); |
|
}elsif($env{'form.action'} eq 'changewysiwyg'){ |
|
&wysiwygchanger($r); |
|
}elsif($env{'form.action'} eq 'set_wysiwyg'){ |
|
&verify_and_change_wysiwyg($r); |
|
}elsif($env{'form.action'} eq 'changediscussions'){ |
|
&discussionchanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_discussion'){ |
|
&verify_and_change_discussion($r); |
|
}elsif($env{'form.action'} eq 'changerolespref'){ |
|
&rolesprefchanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_rolespref'){ |
|
&verify_and_change_rolespref($r); |
|
}elsif($env{'form.action'} eq 'changetexenginepref'){ |
|
&texenginechanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_texengine'){ |
|
&verify_and_change_texengine($r); |
|
}elsif($env{'form.action'} eq 'changeicons'){ |
|
&iconchanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_icons'){ |
|
&verify_and_change_icons($r); |
|
}elsif($env{'form.action'} eq 'changeclicker'){ |
|
&clickerchanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_clicker'){ |
|
&verify_and_change_clicker($r); |
|
}elsif($env{'form.action'} eq 'changedomcoord'){ |
|
&domcoordchanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_domcoord'){ |
|
&verify_and_change_domcoord($r); |
|
}elsif($env{'form.action'} eq 'lockwarning'){ |
|
&lockwarning($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_locks'){ |
|
&verify_and_change_lockwarning($r); |
|
}elsif($env{'form.action'} eq 'changecourseinit'){ |
|
&coursedisplaychanger($r); |
|
}elsif($env{'form.action'} eq 'verify_and_change_coursepage'){ |
|
&verify_and_change_coursepage($r); |
|
}elsif($env{'form.action'} eq 'authorsettings'){ |
|
&author_space_settings($r); |
|
}elsif($env{'form.action'} eq 'change_authoring_settings'){ |
|
&change_authoring_settings($r); |
|
}elsif($env{'form.action'} eq 'debugtoggle'){ |
|
if (&can_toggle_debug()) { |
|
&toggle_debug(); |
|
} |
|
&print_main_menu($r); |
|
} elsif ($env{'form.action'} eq 'changelockednames') { |
|
&lockednameschanger($r); |
|
} elsif ($env{'form.action'} eq 'verify_and_change_lockednames') { |
|
&verify_and_change_lockednames($r); |
|
} |
|
|
|
# Properly end the HTML page of all preference pages |
|
# started in each sub routine |
|
# Exception: print_main_menu has its own end_page call |
|
unless (!exists $env{'form.action'} || |
|
$env{'form.action'} eq 'debugtoggle') { |
|
$r->print(&Apache::loncommon::end_page()); |
|
} |
|
|
my @Options; |
return OK; |
# Determine current authentication method |
} |
my $currentauth=&Apache::lonnet::queryauthenticate($user,$domain); |
|
if ($currentauth =~ /^(unix|internal):/) { |
|
push (@Options,({ action => 'changepass', |
|
linktext => 'Change Password', |
|
href => '/adm/preferences', |
|
help => 'Change_Password', |
|
subroutine => \&passwordchanger, |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changepass', |
|
text => 'Change Password'}, |
|
}, |
|
{ action => 'verify_and_change_pass', |
|
subroutine => \&verify_and_change_password, |
|
breadcrumb => |
|
{ href =>'/adm/preferences?action=changepass', |
|
text => 'Change Password'}, |
|
printmenu => 'not_on_error', |
|
})); |
|
} |
|
push (@Options,({ action => 'changescreenname', |
|
linktext => 'Change Screen Name', |
|
href => '/adm/preferences', |
|
help => 'Prefs_Screen_Name_Nickname', |
|
subroutine => \&screennamechanger, |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changescreenname', |
|
text => 'Change Screen Name'}, |
|
}, |
|
{ action => 'verify_and_change_screenname', |
|
subroutine => \&verify_and_change_screenname, |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changescreenname', |
|
text => 'Change Screen Name'}, |
|
printmenu => 'yes', |
|
})); |
|
|
|
push (@Options,({ action => 'changemsgforward', |
|
linktext => 'Change Message Forwarding and Notification Email Addresses', |
|
href => '/adm/preferences', |
|
help => 'Prefs_Forwarding', |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changemsgforward', |
|
text => 'Change Message Forwarding'}, |
|
subroutine => \&msgforwardchanger, |
|
}, |
|
{ action => 'verify_and_change_msgforward', |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changemsgforward', |
|
text => 'Change Message Forwarding'}, |
|
printmenu => 'no', |
|
subroutine => \&verify_and_change_msgforward })); |
|
my $aboutmeaction= |
|
'/adm/'.$env{'user.domain'}.'/'.$env{'user.name'}.'/aboutme'; |
|
push (@Options,{ action => 'none', |
|
linktext => |
|
q{Edit the 'About Me' Personal Information Screen}, |
|
help => 'Prefs_About_Me', |
|
href => $aboutmeaction}); |
|
push (@Options,({ action => 'changecolors', |
|
linktext => 'Change Color Scheme', |
|
href => '/adm/preferences', |
|
help => 'Change_Colors', |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changecolors', |
|
text => 'Change Colors'}, |
|
subroutine => \&colorschanger, |
|
}, |
|
{ action => 'verify_and_change_colors', |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changecolors', |
|
text => 'Change Colors'}, |
|
printmenu => 'yes', |
|
subroutine => \&verify_and_change_colors, |
|
})); |
|
push (@Options,({ action => 'changelanguages', |
|
linktext => 'Change Language Preferences', |
|
href => '/adm/preferences', |
|
help => 'Prefs_Language', |
|
breadcrumb=> |
|
{ href => '/adm/preferences?action=changelanguages', |
|
text => 'Change Language'}, |
|
subroutine => \&languagechanger, |
|
}, |
|
{ action => 'verify_and_change_languages', |
|
breadcrumb=> |
|
{href => '/adm/preferences?action=changelanguages', |
|
text => 'Change Language'}, |
|
printmenu => 'yes', |
|
subroutine=>\&verify_and_change_languages, } |
|
)); |
|
push (@Options,({ action => 'changewysiwyg', |
|
linktext => 'Change WYSIWYG Editor Preferences', |
|
href => '/adm/preferences', |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changewysiwyg', |
|
text => 'Change WYSIWYG Preferences'}, |
|
subroutine => \&wysiwygchanger, |
|
}, |
|
{ action => 'set_wysiwyg', |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changewysiwyg', |
|
text => 'Change WYSIWYG Preferences'}, |
|
printmenu => 'yes', |
|
subroutine => \&verify_and_change_wysiwyg, } |
|
)); |
|
push (@Options,({ action => 'changediscussions', |
|
linktext => 'Change Discussion Display Preferences', |
|
href => '/adm/preferences', |
|
help => 'Change_Discussion_Display', |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changediscussions', |
|
text => 'Change Discussion Preferences'}, |
|
subroutine => \&discussionchanger, |
|
}, |
|
{ action => 'verify_and_change_discussion', |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changediscussions', |
|
text => 'Change Discussion Preferences'}, |
|
printmenu => 'yes', |
|
subroutine => \&verify_and_change_discussion, } |
|
)); |
|
|
|
my $role = ($env{'user.adv'} ? 'Roles' : 'Course'); |
|
push (@Options,({ action => 'changerolespref', |
|
linktext => 'Change '.$role.' Page Preferences', |
|
href => '/adm/preferences', |
|
subroutine => \&rolesprefchanger, |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changerolespref', |
|
text => 'Change '.$role.' Page Pref'}, |
|
}, |
|
{ action => 'verify_and_change_rolespref', |
|
subroutine => \&verify_and_change_rolespref, |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changerolespref', |
|
text => 'Change '.$role.' Page Preferences'}, |
|
printmenu => 'yes', |
|
})); |
|
|
|
push (@Options,({ action => 'changetexenginepref', |
|
linktext => 'Change How Math Equations Are Displayed', |
|
href => '/adm/preferences', |
|
subroutine => \&texenginechanger, |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changetexenginepref', |
|
text => 'Change Math Pref'}, |
|
}, |
|
{ action => 'verify_and_change_texengine', |
|
subroutine => \&verify_and_change_texengine, |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changetexenginepref', |
|
text => 'Change Math Preferences'}, |
|
printmenu => 'yes', |
|
})); |
|
|
|
if ($env{'environment.remote'} eq 'off') { |
|
push (@Options,({ action => 'launch', |
|
linktext => 'Launch Remote Control', |
|
href => '/adm/remote?url=/adm/preferences', |
|
})); |
|
} else { |
|
push (@Options,({ action => 'collapse', |
|
linktext => 'Collapse Remote Control', |
|
href => '/adm/remote?url=/adm/preferences', |
|
})); |
|
} |
|
|
|
push (@Options,({ action => 'changeicons', |
|
linktext => 'Change How Menus are Displayed', |
|
href => '/adm/preferences', |
|
subroutine => \&iconchanger, |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changeicons', |
|
text => 'Change Main Menu'}, |
|
}, |
|
{ action => 'verify_and_change_icons', |
|
subroutine => \&verify_and_change_icons, |
|
breadcrumb => |
|
{ href => '/adm/preferences?action=changeicons', |
|
text => 'Change Main Menu'}, |
|
printmenu => 'yes', |
|
})); |
|
|
|
if (&Apache::lonnet::allowed('whn',$env{'request.course.id'}) |
sub toggle_debug { |
|| &Apache::lonnet::allowed('whn',$env{'request.course.id'}.'/' |
if ($env{'user.debug'}) { |
.$env{'request.course.sec'})) { |
&Apache::lonnet::delenv('user.debug'); |
push (@Options,({ action => 'changecourseinit', |
} else { |
linktext => 'Change Course Initialization Preference', |
&Apache::lonnet::appenv({'user.debug' => 1}); |
href => '/adm/preferences', |
} |
subroutine => \&coursedisplaychanger, |
} |
breadcrumb => |
|
{ href => '/adm/preferences?action=changecourseinit', |
sub can_toggle_debug { |
text => 'Change Course Init. Pref.'}, |
my $can_toggle = 0; |
}, |
my $page = 'toggledebug'; |
{ action => 'verify_and_change_coursepage', |
if (&LONCAPA::lonauthcgi::can_view($page)) { |
breadcrumb => |
$can_toggle = 1; |
{ href => '/adm/preferences?action=changecourseinit', text => 'Change Course Initialization Preference'}, |
} elsif (&LONCAPA::lonauthcgi::check_ipbased_access($page)) { |
printmenu => 'yes', |
$can_toggle = 1; |
subroutine => \&verify_and_change_coursepage, |
} |
})); |
return $can_toggle; |
} |
} |
|
|
if ($env{'user.name'} =~ /^(albertel|fox|foxr|koretemey|korte|hallmat3|turtle|raeburn)$/) { |
sub can_toggle_namelocking { |
push (@Options,({ action => 'debugtoggle', |
my $lockablenames; |
printmenu => 'yes', |
my %domconfig = |
subroutine => \&toggle_debug, |
&Apache::lonnet::get_dom('configuration',['autoupdate'],$env{'user.domain'}); |
})); |
if (ref($domconfig{'autoupdate'}) eq 'HASH') { |
} |
if ($domconfig{'autoupdate'}{'run'}) { |
|
my @inststatuses = split(':',$env{'environment.inststatus'}); |
$r->print(&Apache::loncommon::start_page('Change Preferences')); |
unless (@inststatuses) { |
|
@inststatuses = ('default'); |
my $call = undef; |
} |
my $help = undef; |
my %updateable = &updateable_userinfo($domconfig{'autoupdate'},\@inststatuses); |
my $printmenu = 'yes'; |
if ($updateable{'lastname'} || $updateable{'firstname'} || |
foreach my $option (@Options) { |
$updateable{'middlename'}) { |
if ($option->{'action'} eq $env{'form.action'}) { |
if (ref($domconfig{'autoupdate'}{'lockablenames'}) eq 'ARRAY') { |
$call = $option->{'subroutine'}; |
unless (@inststatuses) { |
$printmenu = $option->{'printmenu'}; |
@inststatuses = ('default'); |
if (exists($option->{'breadcrumb'})) { |
} |
&Apache::lonhtmlcommon::add_breadcrumb |
foreach my $status (@inststatuses) { |
($option->{'breadcrumb'}); |
if (grep(/^\Q$status\E$/,@{$domconfig{'autoupdate'}{'lockablenames'}})) { |
} |
$lockablenames = 1; |
$help=$option->{'help'}; |
last; |
} |
} |
} |
} |
$r->print(&Apache::lonhtmlcommon::breadcrumbs('Change Preferences',$help)); |
|
my $error; |
|
if (defined($call)) { |
|
$error = $call->($r); |
|
} |
|
if ( ( ($printmenu eq 'yes') |
|
|| ($printmenu eq 'not_on_error' && !$error) ) |
|
&& (!$env{'form.returnurl'})) { |
|
my $optionlist = '<table cellpadding="5">'; |
|
if ($env{'user.name'} =~ |
|
/^(albertel|kortemey|fox|foxr|korte|hallmat3|turtle|raeburn)$/ |
|
) { |
|
push (@Options,({ action => 'debugtoggle', |
|
linktext => 'Toggle Debug Messages', |
|
text => 'Current Debug status is -'. |
|
$env{'user.debug'}.'-.', |
|
href => '/adm/preferences', |
|
printmenu => 'yes', |
|
subroutine => \&toggle_debug, |
|
})); |
|
} |
|
foreach my $option(@Options) { |
|
my $optiontext = ''; |
|
if (exists($option->{'href'})) { |
|
$option->{'href_args'}{'action'}=$option->{'action'}; |
|
$optiontext .= |
|
'<a href="'.&add_get_param($option->{'href'}, |
|
$option->{'href_args'}).'">'. |
|
&mt($option->{'linktext'}).'</a>'; |
|
} |
|
if (exists($option->{'text'})) { |
|
$optiontext .= ' '.&mt($option->{'text'}); |
|
} |
|
if ($optiontext ne '') { |
|
$optiontext = '<font size="+1">'.$optiontext.'</font>'; |
|
my $helplink = ' '; |
|
if (exists($option->{'help'})) { |
|
$helplink = &Apache::loncommon::help_open_topic |
|
($option->{'help'}); |
|
} |
} |
$optionlist .= '<tr>'. |
|
'<td>'.$helplink.'</td>'. |
|
'<td>'.$optiontext.'</td>'. |
|
'</tr>'; |
|
} |
} |
} |
} |
$optionlist .= '</table>'; |
|
$r->print($optionlist); |
|
} elsif ($env{'form.returnurl'}) { |
|
$r->print('<br /><a href="'.$env{'form.returnurl'}.'"><font size="+1">'. |
|
&mt('Return').'</font></a>'); |
|
} |
} |
$r->print(&Apache::loncommon::end_page()); |
return $lockablenames; |
return OK; |
|
} |
} |
|
|
sub toggle_debug { |
sub updateable_userinfo { |
if ($env{'user.debug'}) { |
my ($autoupdate,$inststatuses) = @_; |
&Apache::lonnet::delenv('user\.debug'); |
my %updateable; |
} else { |
return %updateable unless ((ref($autoupdate) eq 'HASH') && |
&Apache::lonnet::appenv('user.debug' => 1); |
(ref($inststatuses) eq 'ARRAY')); |
|
if (ref($autoupdate->{'fields'}) eq 'HASH') { |
|
foreach my $status (@{$inststatuses}) { |
|
if (ref($autoupdate->{'fields'}{$status}) eq 'ARRAY') { |
|
foreach my $field (@{$autoupdate->{'fields'}{$status}}) { |
|
$updateable{$field} = 1; |
|
} |
|
} |
|
} |
} |
} |
|
return %updateable; |
} |
} |
|
|
1; |
1; |