--- loncom/interface/lonpreferences.pm 2015/03/12 02:58:33 1.196.4.16 +++ loncom/interface/lonpreferences.pm 2013/06/07 16:07:46 1.205 @@ -1,7 +1,7 @@ # The LearningOnline Network # Preferences # -# $Id: lonpreferences.pm,v 1.196.4.16 2015/03/12 02:58:33 raeburn Exp $ +# $Id: lonpreferences.pm,v 1.205 2013/06/07 16:07:46 bisitz Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,6 +36,8 @@ use strict; use LONCAPA; use Apache::Constants qw(:common); use Apache::File; +use Crypt::DES; +use DynaLoader; # for Crypt::DES version use Apache::loncommon(); use Apache::lonhtmlcommon(); use Apache::lonlocal; @@ -43,6 +45,50 @@ use Apache::lonnet; use LONCAPA::lonauthcgi(); 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 # ################################################################ @@ -165,7 +211,7 @@ sub texenginechanger { 'tth' => 'tth (TeX to HTML)', #'ttm' => 'TeX to MathML', 'jsMath' => 'jsMath', - 'MathJax' => 'MathJax', + 'MathJax' => 'MathJax', 'mimetex' => 'mimetex (Convert to Images)', 'raw' => 'Raw (Screen Reader)' ); @@ -183,7 +229,6 @@ sub texenginechanger { '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):', @@ -220,10 +265,10 @@ $lt{'exmpl'}

$lt{'mathjax'}

- +

-$lt{'mathjaxinfo'} +MathJax provides rendered equations whose source code can be extracted in TeX and MathML formats by right clicking the equation.

$lt{'jsmath'}

@@ -235,17 +280,17 @@ if (jsMath.nofonts == 1) { } - +

$lt{'mimetex'}

- +

$lt{'tth'}

- +

ENDLSCREEN if ($env{'environment.texengine'} ne 'jsMath') { @@ -309,7 +354,7 @@ sub rolesprefchanger { my $hotlist_n=$userenv{'recentrolesn'}; my ($checkedon,$checkedoff); if ($hotlist_flag) { - $checkedon = 'checked="checked"'; + $checkedon = 'checked="checked"'; } else { $checkedoff = 'checked="checked"'; } @@ -392,7 +437,7 @@ $options.' &Apache::lonhtmlcommon::row_closure(1). &Apache::lonhtmlcommon::end_pick_box().' '); - if ($roles_check_list) { + if ($roles_check_list) { $r->print('

'.&mt('Freeze Roles').'

'.&mt('The table below can be used to [_1]freeze[_2] '.$lc_role.'s in the Hotlist.','','').'
'. @@ -402,7 +447,7 @@ $options.'

'); } else { $r->print('
'. - &mt('Once the Hotlist contains recently visited '.$lc_role.'s you can return to this page to also set frozen roles.')); + &mt('Once the Hotlist contains recently visited '.$lc_role.'s, you can return to this page to also set frozen roles.')); } $r->print('
@@ -789,7 +834,7 @@ sub lockwarning { 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)) { + foreach my $id (keys %which) { $which.='
  • '.$which{$id}.'
  • '; } my $change=&mt('Override'); @@ -831,15 +876,15 @@ sub msgforwardchanger { foad => 'Forward to account(s)', fwdm => 'Forward messages to other account(s) in LON-CAPA', noti => 'E-mail notification of LON-CAPA messages', + foad_exmpl => 'e.g. userA:domain1,userB:domain2,...', mnot => 'E-mail address(es) which should be notified about new LON-CAPA messages', + mnot_exmpl => 'e.g. joe@doe.com', chg => 'Save', email => 'The e-mail address entered in row ', 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", prme => 'Back', ); - $lt{'foad_exmpl'} = &mt('e.g. [_1]userA:domain1,userB:domain2,...[_2]','',''); - $lt{'mnot_exmpl'} = &mt('e.g. [_1]joe@doe.com[_2]','',''); Apache::lonhtmlcommon::add_breadcrumb( { href => '/adm/preferences?action=changemsgforward', text => 'Messages & Notifications'}); @@ -943,7 +988,7 @@ ENDMSG '" onclick="javscript:delete_address('."'$num'".')" />'. &mt('Delete').''. ''; my %chk; if (defined($allnot{$item}{'crit'})) { @@ -992,7 +1037,7 @@ ENDMSG ''.&mt('Add new address').''. ''; + '" onFocus="javascript:new_address('."'$num'".')" />'; foreach my $type ('all','crit','reg') { $output .= '