--- loncom/interface/loncommon.pm 2002/04/15 23:37:37 1.31 +++ loncom/interface/loncommon.pm 2002/04/22 15:26:46 1.32 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.31 2002/04/15 23:37:37 albertel Exp $ +# $Id: loncommon.pm,v 1.32 2002/04/22 15:26:46 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -143,10 +143,193 @@ BEGIN { "<font color=yellow>INFO: Read file types and thesaurus</font>"); $readit=1; } - + } # ============================================================= END BEGIN BLOCK +############################################################### +## Authentication changing form generation subroutines ## +############################################################### +## +## All of the authform_xxxxxxx subroutines take their inputs in a +## hash, and have reasonable default values. +## +## formname = the name given in the <form> tag. +sub authform_header{ + my %in = ( + formname => 'cu', + kerb_def_dom => 'MSU.EDU', + @_, + ); + $in{'formname'} = 'document.' . $in{'formname'}; + my $result=''; + $result.=<<"END"; +var current = new Object(); +current.radiovalue = 'nochange'; +current.argfield = null; + +function changed_radio(choice,currentform) { + var choicearg = choice + 'arg'; + // If a radio button in changed, we need to change the argfield + if (current.radiovalue != choice) { + current.radiovalue = choice; + if (current.argfield != null) { + currentform.elements[current.argfield].value = ''; + } + if (choice == 'nochange') { + current.argfield = null; + } else { + current.argfield = choicearg; + switch(choice) { + case 'krb': + currentform.elements[current.argfield].value = + "$in{'kerb_def_dom'}"; + break; + default: + break; + } + } + } + return; +} + +function changed_text(choice,currentform) { + var choicearg = choice + 'arg'; + if (currentform.elements[choicearg].value !='') { + switch (choice) { + case 'krb': currentform.elements[choicearg].value = + currentform.elements[choicearg].value.toUpperCase(); + break; + default: + } + // clear old field + if ((current.argfield != choicearg) && (current.argfield != null)) { + currentform.elements[current.argfield].value = ''; + } + current.argfield = choicearg; + } + set_auth_radio_buttons(choice,currentform); + return; +} + +function set_auth_radio_buttons(newvalue,currentform) { + var i=0; + while (i < currentform.login.length) { + if (currentform.login[i].value == newvalue) { break; } + i++; + } + if (i == currentform.login.length) { + return; + } + current.radiovalue = newvalue; + currentform.login[i].checked = true; + return; +} +END + return $result; +} + +sub authform_authorwarning{ + my $result=''; + $result=<<"END"; +<i>As a general rule, only authors or co-authors should be filesystem +authenticated (which allows access to the server filesystem).</i> +END + return $result; +} + +sub authform_nochange{ + my %in = ( + formname => 'document.cu', + kerb_def_dom => 'MSU.EDU', + @_, + ); + my $result=''; + $result.=<<"END"; +<input type="radio" name="login" value="nochange" checked="checked" + onclick="javascript:changed_radio('nochange',$in{'formname'});"> +Do not change login data +END + return $result; +} + +sub authform_kerberos{ + my %in = ( + formname => 'document.cu', + kerb_def_dom => 'MSU.EDU', + @_, + ); + my $result=''; + $result.=<<"END"; +<input type="radio" name="login" value="krb" + onclick="javascript:changed_radio('krb',$in{'formname'});" + onchange="javascript:changed_radio('krb',$in{'formname'});"> +Kerberos authenticated with domain +<input type="text" size="10" name="krbarg" value="" + onchange="javascript:changed_text('krb',$in{'formname'});"> +END + return $result; +} + +sub authform_internal{ + my %args = ( + formname => 'document.cu', + kerb_def_dom => 'MSU.EDU', + @_, + ); + my $result=''; + $result.=<<"END"; +<input type="radio" name="login" value="int" + onchange="javascript:changed_radio('int',$args{'formname'});" + onclick="javascript:changed_radio('int',$args{'formname'});"> +Internally authenticated (with initial password +<input type="text" size="10" name="intarg" value="" + onchange="javascript:changed_text('int',$args{'formname'});"> +END + return $result; +} + +sub authform_local{ + my %in = ( + formname => 'document.cu', + kerb_def_dom => 'MSU.EDU', + @_, + ); + my $result=''; + $result.=<<"END"; +<input type="radio" name="login" value="loc" + onchange="javascript:changed_radio('loc',$in{'formname'});" + onclick="javascript:changed_radio('loc',$in{'formname'});"> +Local Authentication with argument +<input type="text" size="10" name="locarg" value="" + onchange="javascript:changed_text('loc',$in{'formname'});"> +END + return $result; +} + +sub authform_filesystem{ + my %in = ( + formname => 'document.cu', + kerb_def_dom => 'MSU.EDU', + @_, + ); + my $result=''; + $result.=<<"END"; +<input type="radio" name="login" value="fsys" + onchange="javascript:changed_radio('fsys',$in{'formname'});" + onclick="javascript:changed_radio('fsys',$in{'formname'});"> +Filesystem authenticated (with initial password +<input type="text" size="10" name="fsysarg" value="" + onchange="javascript:changed_text('fsys',$in{'formname'});"> +END + return $result; +} + +############################################################### +## End Authentication changing form generation functions ## +############################################################### + + # ---------------------------------------------------------- Is this a keyword? @@ -566,7 +749,7 @@ sub csv_print_select_table { $r->print('<tr><td>'.$display.'</td>'); $r->print('<td><select name=f'.$i. - ' onChange="flip(this.form,'.$i.');">'); + ' onchange="javascript:flip(this.form,'.$i.');">'); $r->print('<option value="none"></option>'); foreach (sort({$a <=> $b} keys(%sone))) { $r->print('<option value="'.$_.'">Column '.($_+1).'</option>'); @@ -595,7 +778,7 @@ sub csv_samples_select_table { foreach (sort keys %sone) { $r->print('<tr><td><select name=f'.$i. - ' onChange="flip(this.form,'.$i.');">'); + ' onchange="javascript:flip(this.form,'.$i.');">'); foreach (@$d) { my ($value,$display)=@{ $_ }; $r->print('<option value='.$value.'>'.$display.'</option>');