version 1.296, 2011/12/11 13:23:24
|
version 1.306, 2012/03/26 10:24:08
|
Line 991 Returns: none
|
Line 991 Returns: none
|
######################################################## |
######################################################## |
######################################################## |
######################################################## |
|
|
my $uniq=0; |
|
sub get_uniq_name { |
|
$uniq++; |
|
return 'uniquename'.$uniq; |
|
} |
|
|
|
# Create progress |
# Create progress |
sub Create_PrgWin { |
sub Create_PrgWin { |
my ($r, $title, $heading, $number_to_do,$type,$width,$formname, |
my ($r,$number_to_do)=@_; |
$inputname)=@_; |
|
if (!defined($type)) { $type='popup'; } |
|
if (!defined($width)) { $width=55; } |
|
my %prog_state; |
my %prog_state; |
$prog_state{'type'}=$type; |
|
if ($type eq 'popup') { |
|
$prog_state{'window'}='popwin'; |
|
my $start_page = |
|
&Apache::loncommon::start_page($title,undef, |
|
{'only_body' => 1, |
|
'bgcolor' => '#88DDFF', |
|
'js_ready' => 1}); |
|
my $end_page = &Apache::loncommon::end_page({'js_ready' => 1}); |
|
|
|
#the whole function called through timeout is due to issues |
|
#in mozilla Read BUG #2665 if you want to know the whole story |
|
&r_print($r,&Apache::lonhtmlcommon::scripttag( |
|
"var popwin; |
|
function openpopwin () { |
|
popwin=open(\'\',\'popwin\',\'width=400,height=100\');". |
|
"popwin.document.writeln(\'".$start_page. |
|
"<h4>".&mt("$heading")."<\/h4>". |
|
"<form action=\"\" name=\"popremain\" method=\"post\">". |
|
'<input type="text" size="'.$width.'" name="remaining" value="'. |
|
&mt('Starting').'" /><\\/form>'.$end_page. |
|
"\');". |
|
"popwin.document.close();}". |
|
"\nwindow.setTimeout(openpopwin,0)" |
|
)); |
|
$prog_state{'formname'}='popremain'; |
|
$prog_state{'inputname'}="remaining"; |
|
} elsif ($type eq 'inline') { |
|
$prog_state{'window'}='window'; |
|
if (!$formname) { |
|
$prog_state{'formname'}=&get_uniq_name(); |
|
&r_print($r,'<form action="" name="'.$prog_state{'formname'}.'">'); |
|
} else { |
|
$prog_state{'formname'}=$formname; |
|
} |
|
if (!$inputname) { |
|
$prog_state{'inputname'}=&get_uniq_name(); |
|
&r_print($r,&mt("$heading [_1]",' <input type="text" name="'.$prog_state{'inputname'}.'" size="'.$width.'" />')); |
|
} else { |
|
$prog_state{'inputname'}=$inputname; |
|
|
|
} |
|
if (!$formname) { &r_print($r,'</form>'); } |
|
&Update_PrgWin($r,\%prog_state,&mt('Starting')); |
|
} |
|
|
|
$prog_state{'done'}=0; |
$prog_state{'done'}=0; |
$prog_state{'firststart'}=&Time::HiRes::time(); |
$prog_state{'firststart'}=&Time::HiRes::time(); |
$prog_state{'laststart'}=&Time::HiRes::time(); |
$prog_state{'laststart'}=&Time::HiRes::time(); |
$prog_state{'max'}=$number_to_do; |
$prog_state{'max'}=$number_to_do; |
|
&Apache::loncommon::LCprogressbar($r); |
return %prog_state; |
return %prog_state; |
} |
} |
|
|
# update progress |
# update progress |
sub Update_PrgWin { |
sub Update_PrgWin { |
my ($r,$prog_state,$displayString)=@_; |
my ($r,$prog_state,$displayString)=@_; |
&r_print($r,&Apache::lonhtmlcommon::scripttag( |
&Apache::loncommon::LCprogressbarUpdate($r,undef,$displayString); |
$$prog_state{'window'}.'.document.'. |
|
$$prog_state{'formname'}.'.'. |
|
$$prog_state{'inputname'}.'.value="'. |
|
$displayString.'";' |
|
)); |
|
$$prog_state{'laststart'}=&Time::HiRes::time(); |
$$prog_state{'laststart'}=&Time::HiRes::time(); |
} |
} |
|
|
Line 1112 sub Increment_PrgWin {
|
Line 1053 sub Increment_PrgWin {
|
$min, |
$min, |
$sec, |
$sec, |
$lasttime); |
$lasttime); |
|
my $percent=0; |
&r_print($r,&Apache::lonhtmlcommon::scripttag( |
if ($$prog_state{'max'}) { |
$$prog_state{'window'}.'.document.'. |
$percent=int(100.*$current/$$prog_state{'max'}); |
$$prog_state{'formname'}.'.'. |
} |
$$prog_state{'inputname'}.'.value="'.$timeinfo.'";' |
&Apache::loncommon::LCprogressbarUpdate($r,$percent,$timeinfo); |
)); |
|
$$prog_state{'laststart'}=&Time::HiRes::time(); |
$$prog_state{'laststart'}=&Time::HiRes::time(); |
} |
} |
|
|
# close Progress Line |
# close Progress Line |
sub Close_PrgWin { |
sub Close_PrgWin { |
my ($r,$prog_state)=@_; |
my ($r,$prog_state)=@_; |
if ($$prog_state{'type'} eq 'popup') { |
&Apache::loncommon::LCprogressbarClose($r); |
&r_print($r,&Apache::lonhtmlcommon::scripttag( |
|
'popwin.close()' |
|
)); |
|
} elsif ($$prog_state{'type'} eq 'inline') { |
|
&Update_PrgWin($r,$prog_state,&mt('Done')); |
|
} |
|
undef(%$prog_state); |
undef(%$prog_state); |
} |
} |
|
|
sub r_print { |
|
my ($r,$to_print)=@_; |
|
if ($r) { |
|
$r->print($to_print); |
|
$r->rflush(); |
|
} else { |
|
print($to_print); |
|
} |
|
} |
|
|
|
# ------------------------------------------------------- Puts directory header |
# ------------------------------------------------------- Puts directory header |
|
|
sub crumbs { |
sub crumbs { |
my ($uri,$target,$prefix,$form,$skiplast)=@_; |
my ($uri,$target,$prefix,$form,$skiplast)=@_; |
|
# You cannot crumbnify uploaded or adm resources |
|
if ($uri=~/^\/*(uploaded|adm)\//) { return &mt('(Internal Course/Group Content)'); } |
if ($target) { |
if ($target) { |
$target = ' target="'. |
$target = ' target="'. |
&Apache::loncommon::escape_single($target).'"'; |
&Apache::loncommon::escape_single($target).'"'; |
Line 1185 sub crumbs {
|
Line 1111 sub crumbs {
|
if ($uri !~ m|/$|) { $output=~s|/$||; } |
if ($uri !~ m|/$|) { $output=~s|/$||; } |
$output.='</span>'; |
$output.='</span>'; |
|
|
|
|
return $output; |
return $output; |
} |
} |
|
|
Line 1246 ENDEDITOR
|
Line 1173 ENDEDITOR
|
<script type="text/javascript" src="/adm/jQuery/js/jquery-1.6.2.min.js"></script> |
<script type="text/javascript" src="/adm/jQuery/js/jquery-1.6.2.min.js"></script> |
<script type="text/javascript" src="/adm/jQuery/js/jquery-ui-1.8.16.custom.min.js"></script> |
<script type="text/javascript" src="/adm/jQuery/js/jquery-ui-1.8.16.custom.min.js"></script> |
<link rel="stylesheet" type="text/css" href="/adm/jQuery/css/smoothness/jquery-ui-1.8.16.custom.css" /> |
<link rel="stylesheet" type="text/css" href="/adm/jQuery/css/smoothness/jquery-ui-1.8.16.custom.css" /> |
|
<script type="text/javascript" src="/adm/jpicker/js/jpicker-1.1.6.min.js" > |
|
</script> |
|
<link rel="stylesheet" type="text/css" href="/adm/jpicker/css/jPicker-1.1.6.min.css" /> |
|
<script type='text/javascript' src='/adm/countdown/js/jquery.countdown.js'></script> |
|
<link rel="stylesheet" type="text/css" src='/adm/countdown/css/jquery.countdown.css' /> |
ENDJQUERY |
ENDJQUERY |
return $s; |
return $s; |
} |
} |
Line 1374 sub htmlareaselectactive {
|
Line 1306 sub htmlareaselectactive {
|
$(this).before("<div><a href=\"#\" id=\"LC_rt_"+id+"\" title=\"Enable rich text formatting (bold, italic, etc.)\" class=\"LC_enable_rt\"><b>Rich formatting »</b></a></div>"); |
$(this).before("<div><a href=\"#\" id=\"LC_rt_"+id+"\" title=\"Enable rich text formatting (bold, italic, etc.)\" class=\"LC_enable_rt\"><b>Rich formatting »</b></a></div>"); |
$("#LC_rt_"+id).click(editorHandler); |
$("#LC_rt_"+id).click(editorHandler); |
}); |
}); |
|
$.fn.jPicker.defaults.images.clientPath="/adm/jpicker/images/"; |
|
$(".colorchooser").jPicker(); |
|
|
|
|
}); |
}); |
'; |
'; |
|
# Code to put a due date countdown in 'duedatecountdown' span. |
|
# This is currently located in the breadcrumb headers. |
|
# note that the dueDateLayout is internatinoalized below. |
|
# Here document is used to support the substitution into the javascript below. |
|
# ..which unfortunately necessitates escaping the $'s in the javascript. |
|
|
|
my $dueDateLayout = '<b>' . &mt('Due in: {dn} {dl} {hnn}{sep}{mnn}{sep}{snn}') . '</b>'; |
|
$output .= <<JAVASCRIPT; |
|
\$(document).ready(function() { |
|
if (typeof(dueDate) != "undefined") { |
|
\$("#duedatecountdown").countdown({until: dueDate, compact: true, |
|
layout: "$dueDateLayout", |
|
onTick: function (periods) { |
|
if(\$.countdown.periodsToSeconds(periods) < 60) { |
|
\$(this).css("color", "red"); //Highlight last minute. |
|
} |
|
} |
|
}); |
|
} |
|
}); |
|
JAVASCRIPT |
if ($dragmath_prefix ne '') { |
if ($dragmath_prefix ne '') { |
$output .= ' |
$output .= ' |
|
|
Line 1451 sub show_return_link {
|
Line 1408 sub show_return_link {
|
} |
} |
|
|
|
|
|
## |
|
# Set the dueDate variable...note this is done in the timezone |
|
# of the browser. |
|
# |
|
# @param epoch relative time at which the problem is due. |
|
# |
|
# @return the javascript fragment to set the date: |
|
# |
|
sub set_due_date { |
|
my $dueStamp = shift; |
|
my $duems = $dueStamp * 1000; # Javascript Date object needs ms not seconds. |
|
|
|
my $now = time()*1000; |
|
|
|
# This slightly obscure bit of javascript sets the dueDate variable |
|
# to the time in the browser at which the problem was due. |
|
# The code should correct for gross differences between the server |
|
# and client's time setting |
|
|
|
my $js = " |
|
<script type='text/javascript'> |
|
//<![CDATA[ |
|
var serverDueDate = $duems; |
|
var serverTime = $now; |
|
var clientTime = (new Date()).getTime(); |
|
var dueDate = new Date(serverDueDate + (clientTime - serverTime)); |
|
|
|
//]]> |
|
</script> |
|
"; |
|
|
|
} |
|
|
############################################################ |
############################################################ |
############################################################ |
############################################################ |
|
|
Line 1538 returns: nothing
|
Line 1528 returns: nothing
|
} |
} |
my $links; |
my $links; |
if ((&show_return_link) && (!$CourseBreadcrumbs)) { |
if ((&show_return_link) && (!$CourseBreadcrumbs)) { |
$links=&htmltag( 'a',"<img src='/res/adm/pages/reload.png' border='0' style='vertical-align:middle;' />", |
my $alttext = &mt('Go Back'); |
|
$links=&htmltag( 'a',"<img src='/res/adm/pages/reload.png' border='0' style='vertical-align:middle;' alt='$alttext' />", |
{ href => '/adm/flip?postdata=return:', |
{ href => '/adm/flip?postdata=return:', |
title => &mt("Back to most recent content resource") }); |
title => &mt("Back to most recent content resource") }); |
|
$links=&htmltag('li',$links); |
} |
} |
$links.= join "", |
$links.= join "", |
map { |
map { |
Line 1567 returns: nothing
|
Line 1559 returns: nothing
|
|
|
# last breadcrumb is the first order heading of a page |
# last breadcrumb is the first order heading of a page |
# for course breadcrumbs it's just bold |
# for course breadcrumbs it's just bold |
|
|
$links .= &htmltag( 'li', htmltag($CourseBreadcrumbs ? 'b' : 'h1', |
$links .= &htmltag( 'li', htmltag($CourseBreadcrumbs ? 'b' : 'h1', |
$lasttext), {title => $lasttext}); |
$lasttext), {title => $lasttext}); |
|
|
|
$links .= '<li> <span id="duedatecountdown"></span></li>'; |
|
|
my $icons = ''; |
my $icons = ''; |
$faq = $last->{'faq'} if (exists($last->{'faq'})); |
$faq = $last->{'faq'} if (exists($last->{'faq'})); |
$bug = $last->{'bug'} if (exists($last->{'bug'})); |
$bug = $last->{'bug'} if (exists($last->{'bug'})); |
Line 1587 returns: nothing
|
Line 1582 returns: nothing
|
$faq,$bug); |
$faq,$bug); |
} |
} |
# |
# |
|
|
|
|
|
|
unless ($CourseBreadcrumbs) { |
unless ($CourseBreadcrumbs) { |
Line 1595 returns: nothing
|
Line 1591 returns: nothing
|
$links = &htmltag('ul', $links, { class => "LC_CourseBreadcrumbs" }); |
$links = &htmltag('ul', $links, { class => "LC_CourseBreadcrumbs" }); |
} |
} |
|
|
|
|
if ($component) { |
if ($component) { |
$links = &htmltag('span', |
$links = &htmltag('span', |
( $no_mt ? $component : mt($component) ). |
( $no_mt ? $component : mt($component) ). |
( $icons ? $icons : '' ), |
( $icons ? $icons : '' ), |
{ class => 'LC_breadcrumbs_component' } ) |
{ class => 'LC_breadcrumbs_component' } ) |
.$links; |
.$links |
|
; |
} |
} |
|
|
&render_tools(\$links); |
&render_tools(\$links); |
Line 1611 returns: nothing
|
Line 1609 returns: nothing
|
# Return the @Crumbs stack to what we started with |
# Return the @Crumbs stack to what we started with |
push(@Crumbs,$last); |
push(@Crumbs,$last); |
shift(@Crumbs); |
shift(@Crumbs); |
|
|
|
|
# Return the breadcrumb's line |
# Return the breadcrumb's line |
|
|
|
|
|
|
return "$links"; |
return "$links"; |
} |
} |
|
|
Line 2077 sub course_custom_roles {
|
Line 2080 sub course_custom_roles {
|
|
|
|
|
sub resource_info_box { |
sub resource_info_box { |
my ($symb,$onlyfolderflag)=@_; |
my ($symb,$onlyfolderflag,$stuvcurrent,$stuvdisp)=@_; |
my $return=''; |
my $return=''; |
|
if ($stuvcurrent ne '') { |
|
$return = '<div class="LC_left_float">'; |
|
} |
if ($symb) { |
if ($symb) { |
$return=&Apache::loncommon::start_data_table(); |
$return.=&Apache::loncommon::start_data_table(); |
my ($map,$id,$resource)=&Apache::lonnet::decode_symb($symb); |
my ($map,$id,$resource)=&Apache::lonnet::decode_symb($symb); |
my $folder=&Apache::lonnet::gettitle($map); |
my $folder=&Apache::lonnet::gettitle($map); |
$return.=&Apache::loncommon::start_data_table_row(). |
$return.=&Apache::loncommon::start_data_table_row(). |
'<th>'.&mt('Folder:').'</th><td>'.$folder.'</td>'. |
'<th align="left">'.&mt('Folder:').'</th><td>'.$folder.'</td>'. |
&Apache::loncommon::end_data_table_row(); |
&Apache::loncommon::end_data_table_row(); |
unless ($onlyfolderflag) { |
unless ($onlyfolderflag) { |
$return.=&Apache::loncommon::start_data_table_row(). |
$return.=&Apache::loncommon::start_data_table_row(). |
'<th>'.&mt('Resource:').'</th><td>'.&Apache::lonnet::gettitle($symb).'</td>'. |
'<th align="left">'.&mt('Resource:').'</th><td>'.&Apache::lonnet::gettitle($symb).'</td>'. |
|
&Apache::loncommon::end_data_table_row(); |
|
} |
|
if ($stuvcurrent ne '') { |
|
$return .= &Apache::loncommon::start_data_table_row(). |
|
'<th align="left">'.&mt("Student's current version:").'</th><td>'.$stuvcurrent.'</td>'. |
|
&Apache::loncommon::end_data_table_row(); |
|
} |
|
if ($stuvdisp ne '') { |
|
$return .= &Apache::loncommon::start_data_table_row(). |
|
'<th align="left">'.&mt("Student's version displayed:").'</th><td>'.$stuvdisp.'</td>'. |
&Apache::loncommon::end_data_table_row(); |
&Apache::loncommon::end_data_table_row(); |
} |
} |
$return.=&Apache::loncommon::end_data_table(); |
$return.=&Apache::loncommon::end_data_table(); |
} else { |
} else { |
$return='<p><span class="LC_error">'.&mt('No context provided.').'</span></p>'; |
$return='<p><span class="LC_error">'.&mt('No context provided.').'</span></p>'; |
} |
} |
|
if ($stuvcurrent ne '') { |
|
$return .= '</div>'; |
|
} |
return $return; |
return $return; |
|
|
} |
} |
|
|
############################################## |
############################################## |