version 1.135, 2006/06/22 15:53:48
|
version 1.141, 2006/07/06 22:51:34
|
Line 99 sub recent_filename {
|
Line 99 sub recent_filename {
|
} |
} |
|
|
sub store_recent { |
sub store_recent { |
my ($area,$name,$value)=@_; |
my ($area,$name,$value,$freeze)=@_; |
my $file=&recent_filename($area); |
my $file=&recent_filename($area); |
my %recent=&Apache::lonnet::dump($file); |
my %recent=&Apache::lonnet::dump($file); |
if (scalar(keys(%recent))>20) { |
if (scalar(keys(%recent))>20) { |
# remove oldest value |
# remove oldest value |
my $oldest=time; |
my $oldest=time(); |
my $delkey=''; |
my $delkey=''; |
foreach (keys %recent) { |
foreach my $item (keys(%recent)) { |
my $thistime=(split(/\&/,$recent{$_}))[0]; |
my $thistime=(split(/\&/,$recent{$item}))[0]; |
if ($thistime<$oldest) { |
if (($thistime ne "always_include") && ($thistime<$oldest)) { |
$oldest=$thistime; |
$oldest=$thistime; |
$delkey=$_; |
$delkey=$item; |
} |
} |
} |
} |
&Apache::lonnet::del($file,[$delkey]); |
&Apache::lonnet::del($file,[$delkey]); |
} |
} |
# store new value |
# store new value |
|
my $timestamp; |
|
if ($freeze) { |
|
$timestamp = "always_include"; |
|
} else { |
|
$timestamp = time(); |
|
} |
&Apache::lonnet::put($file,{ $name => |
&Apache::lonnet::put($file,{ $name => |
time.'&'.&escape($value) }); |
$timestamp.'&'.&escape($value) }); |
} |
} |
|
|
sub remove_recent { |
sub remove_recent { |
Line 132 sub select_recent {
|
Line 138 sub select_recent {
|
my $return="\n<select name='$fieldname'". |
my $return="\n<select name='$fieldname'". |
($event?" onchange='$event'":''). |
($event?" onchange='$event'":''). |
">\n<option value=''>--- ".&mt('Recent')." ---</option>"; |
">\n<option value=''>--- ".&mt('Recent')." ---</option>"; |
foreach (sort keys %recent) { |
foreach my $value (sort(keys(%recent))) { |
unless ($_=~/^error\:/) { |
unless ($value =~/^error\:/) { |
my $escaped = &Apache::loncommon::escape_url($_); |
my $escaped = &Apache::loncommon::escape_url($value); |
$return.="\n<option value='$escaped'>". |
$return.="\n<option value='$escaped'>". |
&unescape((split(/\&/,$recent{$_}))[1]). |
&unescape((split(/\&/,$recent{$value}))[1]). |
'</option>'; |
'</option>'; |
} |
} |
} |
} |
Line 149 sub get_recent {
|
Line 155 sub get_recent {
|
my %recent=&Apache::lonnet::dump(&recent_filename($area)); |
my %recent=&Apache::lonnet::dump(&recent_filename($area)); |
|
|
# Create hash with key as time and recent as value |
# Create hash with key as time and recent as value |
|
# Begin filling return_hash with any 'always_include' option |
my %time_hash = (); |
my %time_hash = (); |
my $nfrozen = 0; |
my %return_hash = (); |
foreach (keys %recent) { |
foreach my $item (keys %recent) { |
my ($thistime,$thisvalue)=(split(/\&/,$recent{$_})); |
my ($thistime,$thisvalue)=(split(/\&/,$recent{$item})); |
if (($thisvalue eq 'role_frozen') && ($area='roles')) { |
if ($thistime eq 'always_include') { |
$thistime=time+$nfrozen; |
$return_hash{$item} = &unescape($thisvalue); |
$nfrozen++; |
$n--; |
|
} else { |
|
$time_hash{$thistime} = $item; |
} |
} |
$time_hash{$thistime} = $_; |
|
} |
} |
|
|
# Sort by decreasing time and return key value pairs |
# Sort by decreasing time and return key value pairs |
my %return_hash = (); |
|
my $idx = 1; |
my $idx = 1; |
foreach (reverse sort keys %time_hash) { |
foreach my $item (reverse(sort(keys(%time_hash)))) { |
$return_hash{$time_hash{$_}} = |
$return_hash{$time_hash{$item}} = |
&unescape((split(/\&/,$recent{$time_hash{$_}}))[1]); |
&unescape((split(/\&/,$recent{$time_hash{$item}}))[1]); |
if ($n && ($idx++ >= $n)) {last;} |
if ($n && ($idx++ >= $n)) {last;} |
} |
} |
|
|
return %return_hash; |
return %return_hash; |
} |
} |
|
|
|
sub get_recent_frozen { |
|
my ($area) = @_; |
|
my %recent=&Apache::lonnet::dump(&recent_filename($area)); |
|
|
|
# Create hash with all 'frozen' items |
|
my %return_hash = (); |
|
foreach my $item (keys(%recent)) { |
|
my ($thistime,$thisvalue)=(split(/\&/,$recent{$item})); |
|
if ($thistime eq 'always_include') { |
|
$return_hash{$item} = &unescape($thisvalue); |
|
} |
|
} |
|
return %return_hash; |
|
} |
|
|
|
|
|
|
=pod |
=pod |
Line 445 ENDJS
|
Line 467 ENDJS
|
$result .= &mt('[_1] [_2] [_3] ', |
$result .= &mt('[_1] [_2] [_3] ', |
$monthselector,$dayselector,$yearselector); |
$monthselector,$dayselector,$yearselector); |
if (!$nolink) { |
if (!$nolink) { |
$result .= &mt('[_4]Select Date[_5]',$cal_link,'</a>'); |
$result .= &mt('[_1]Select Date[_2]',$cal_link,'</a>'); |
} |
} |
} else { |
} else { |
$result .= &mt('[_1] [_2] [_3] [_4] [_5]m [_6]s ', |
$result .= &mt('[_1] [_2] [_3] [_4] [_5]m [_6]s ', |
$monthselector,$dayselector,$yearselector, |
$monthselector,$dayselector,$yearselector, |
$hourselector,$minuteselector,$secondselector); |
$hourselector,$minuteselector,$secondselector); |
if (!$nolink) { |
if (!$nolink) { |
$result .= &mt('[_7]Select Date[_8]',$cal_link,'</a>'); |
$result .= &mt('[_1]Select Date[_2]',$cal_link,'</a>'); |
} |
} |
} |
} |
$result .= "</span>\n<!-- end $dname date setting form -->\n"; |
$result .= "</span>\n<!-- end $dname date setting form -->\n"; |
Line 1003 sub crumbs {
|
Line 1025 sub crumbs {
|
sub spellheader { |
sub spellheader { |
my $start_page= |
my $start_page= |
&Apache::loncommon::start_page('Speller Suggestions',undef, |
&Apache::loncommon::start_page('Speller Suggestions',undef, |
{'only_body' => 1, |
{'only_body' => 1, |
'js_ready' => 1, |
'js_ready' => 1, |
'bgcolor' => '#DDDDDD',}); |
'bgcolor' => '#DDDDDD', |
|
'add_entries' => { |
|
'onload' => |
|
'document.forms.spellcheckform.submit()', |
|
} |
|
}); |
my $end_page= |
my $end_page= |
&Apache::loncommon::end_page({'js_ready' => 1}); |
&Apache::loncommon::end_page({'js_ready' => 1}); |
|
|
Line 1015 sub spellheader {
|
Line 1042 sub spellheader {
|
//<!-- BEGIN LON-CAPA Internal |
//<!-- BEGIN LON-CAPA Internal |
var checkwin; |
var checkwin; |
|
|
function spellcheckerwindow() { |
function spellcheckerwindow(string) { |
|
var esc_string = string.replace(/\"/g,'"'); |
checkwin=window.open($nothing,'spellcheckwin','height=320,width=280,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'); |
checkwin=window.open($nothing,'spellcheckwin','height=320,width=280,resizable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'); |
checkwin.document.writeln('$start_page<form name="spellcheckform" action="/adm/spellcheck" method="post"><input type="hidden" name="text" value="" /><\\/form>$end_page'); |
checkwin.document.writeln('$start_page<form name="spellcheckform" action="/adm/spellcheck" method="post"><input type="hidden" name="text" value="'+esc_string+'" /><\/form>$end_page'); |
checkwin.document.close(); |
checkwin.document.close(); |
} |
} |
// END LON-CAPA Internal --> |
// END LON-CAPA Internal --> |
Line 1031 sub spelllink {
|
Line 1059 sub spelllink {
|
my ($form,$field)=@_; |
my ($form,$field)=@_; |
my $linktext=&mt('Check Spelling'); |
my $linktext=&mt('Check Spelling'); |
return (<<ENDLINK); |
return (<<ENDLINK); |
<a href="javascript:if (typeof(document.$form.onsubmit)!='undefined') { if (document.$form.onsubmit!=null) { document.$form.onsubmit();}};spellcheckerwindow();checkwin.document.forms.spellcheckform.text.value=this.document.forms.$form.$field.value;checkwin.document.forms.spellcheckform.submit();">$linktext</a> |
<a href="javascript:if (typeof(document.$form.onsubmit)!='undefined') { if (document.$form.onsubmit!=null) { document.$form.onsubmit();}};spellcheckerwindow(this.document.forms.$form.$field.value);">$linktext</a> |
ENDLINK |
ENDLINK |
} |
} |
|
|
Line 1156 A link to help for the component will be
|
Line 1184 A link to help for the component will be
|
|
|
All inputs can be undef without problems. |
All inputs can be undef without problems. |
|
|
Inputs: $color (the background color of the table returned), |
Inputs: $component (the large text on the right side of the table), |
$component (the large text on the right side of the table), |
|
$component_help |
$component_help |
$function (role to get colors from) |
|
$domain (domian of role) |
|
$menulink (boolean, controls whether to include a link to /adm/menu) |
$menulink (boolean, controls whether to include a link to /adm/menu) |
|
$helplink (if 'nohelp' don't include the orange help link) |
|
$css_class (optional name for the class to apply to the table for CSS) |
Returns a string containing breadcrumbs for the current page. |
Returns a string containing breadcrumbs for the current page. |
|
|
=item clear_breadcrumbs |
=item clear_breadcrumbs |
Line 1187 returns: nothing
|
Line 1213 returns: nothing
|
my @Crumbs; |
my @Crumbs; |
|
|
sub breadcrumbs { |
sub breadcrumbs { |
my ($component,$component_help,$menulink,$helplink) = @_; |
my ($component,$component_help,$menulink,$helplink,$css_class) = @_; |
# |
# |
my $Str = "\n".'<table id="LC_breadcrumbs"><tr><td>'; |
$css_class ||= 'LC_breadcrumbs'; |
|
my $Str = "\n".'<table class="'.$css_class.'"><tr><td>'; |
# |
# |
# Make the faq and bug data cascade |
# Make the faq and bug data cascade |
my $faq = ''; |
my $faq = ''; |
Line 1244 returns: nothing
|
Line 1271 returns: nothing
|
# $icons .= &Apache::loncommon::help_open_bug($bug); |
# $icons .= &Apache::loncommon::help_open_bug($bug); |
# } |
# } |
if ($helplink ne 'nohelp') { |
if ($helplink ne 'nohelp') { |
$icons .= &Apache::loncommon::help_open_menu(undef,$component, |
$icons .= &Apache::loncommon::help_open_menu($component, |
$component_help, |
$component_help, |
undef,$faq,$bug); |
$faq,$bug); |
} |
} |
if ($icons ne '') { |
if ($icons ne '') { |
$Str .= $icons.' '; |
$Str .= $icons.' '; |
Line 1255 returns: nothing
|
Line 1282 returns: nothing
|
$Str .= $links.'</td>'; |
$Str .= $links.'</td>'; |
# |
# |
if (defined($component)) { |
if (defined($component)) { |
$Str .= '<td class="LC_breadcrumb_component">'. |
$Str .= '<td class="'.$css_class.'_component">'. |
&mt($component).'</td>'; |
&mt($component).'</td>'; |
} |
} |
$Str .= '</tr></table>'."\n"; |
$Str .= '</tr></table>'."\n"; |