--- loncom/interface/lonhtmlcommon.pm 2024/10/21 15:06:06 1.358.2.23
+++ loncom/interface/lonhtmlcommon.pm 2015/05/05 21:45:55 1.362
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common html routines
#
-# $Id: lonhtmlcommon.pm,v 1.358.2.23 2024/10/21 15:06:06 raeburn Exp $
+# $Id: lonhtmlcommon.pm,v 1.362 2015/05/05 21:45:55 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -92,7 +92,7 @@ sub raw_href_to_link {
sub entity_encode {
my ($text)=@_;
- return &HTML::Entities::encode($text, '\'<>&"');
+ return &HTML::Entities::encode($text, '<>&"');
}
sub direct_parm_link {
@@ -407,7 +407,7 @@ sub textbox {
##############################################
##############################################
sub checkbox {
- my ($name,$checked,$value,$special) = @_;
+ my ($name,$checked,$value) = @_;
my $Str = '';
+ $Str .= ' />';
return $Str;
}
@@ -451,10 +451,12 @@ sub radio {
&date_setter returns html and javascript for a compact date-setting form.
To retrieve values from it, use &get_date_from_form.
-Inputs
-
=over 4
+=item Inputs
+
+=over
+
=item $dname
The name to prepend to the form elements.
@@ -482,50 +484,23 @@ the date/time fields are left empty.
=item $state
Specifies the initial state of the form elements. Either 'disabled' or empty.
-Defaults to empty, which indicates the form elements are not disabled.
-
-=item $no_hh_mm_ss
-
-If true, text boxes for hours, minutes and seconds are omitted.
-
-=item $defhour
-
-Default value for hours (a default of 0 is used otherwise).
-
-=item $defmin
-
-Default value for minutes (a default of 0 is used otherwise).
-
-=item defsec
-
-Default value for seconds (a default of 0 is used otherwise).
-
-=item $nolink
-
-If true, a "Select calendar" link (to pop-up a calendar) is not displayed
-to the right of the items.
-
-=item $no_mm_ss
-
-If true, text boxes for minutes and seconds are omitted.
-
-=item $no_ss
-
-If true, text boxes for seconds are omitted.
+Defaults to empty, which indiciates the form elements are not disabled.
=back
-Bugs
+=item Bugs
The method used to restrict user input will fail in the year 2400.
+=back
+
=cut
##############################################
##############################################
sub date_setter {
my ($formname,$dname,$currentvalue,$special,$includeempty,$state,
- $no_hh_mm_ss,$defhour,$defmin,$defsec,$nolink,$no_mm_ss,$no_ss) = @_;
+ $no_hh_mm_ss,$defhour,$defmin,$defsec,$nolink) = @_;
my $now = time;
my $tzname;
@@ -534,8 +509,6 @@ sub date_setter {
if (! defined($state) || $state ne 'disabled') {
$state = '';
- } else {
- $state = 'disabled="disabled"';
}
if (! defined($no_hh_mm_ss)) {
$no_hh_mm_ss = 0;
@@ -671,7 +644,7 @@ ENDJS
my $minuteselector = qq{};
my $secondselector= qq{};
my $cal_link;
- unless (($nolink) || ($state eq 'disabled')) {
+ if (!$nolink) {
$cal_link = qq{};
}
#
@@ -680,24 +653,17 @@ ENDJS
$result .= &mt('[_1] [_2] [_3] ',
$monthselector,$dayselector,$yearselector).
$tzone;
- } elsif ($no_mm_ss) {
- $result .= &mt('[_1] [_2] [_3] [_4]',
- $monthselector,$dayselector,$yearselector,
- $hourselector).
- $tzone;
- } elsif ($no_ss) {
- $result .= &mt('[_1] [_2] [_3] [_4] [_5]m',
- $monthselector,$dayselector,$yearselector,
- $hourselector,$minuteselector).
- $tzone;
+ if (!$nolink) {
+ $result .= &mt('[_1]Select Date[_2]',$cal_link,'');
+ }
} else {
$result .= &mt('[_1] [_2] [_3] [_4] [_5]m [_6]s ',
$monthselector,$dayselector,$yearselector,
$hourselector,$minuteselector,$secondselector).
$tzone;
- }
- unless (($nolink) || ($state eq 'disabled')) {
- $result .= &mt('[_1]Select Date[_2]',$cal_link,'');
+ if (!$nolink) {
+ $result .= &mt('[_1]Select Date[_2]',$cal_link,'');
+ }
}
$result .= "\n\n";
return $result;
@@ -741,7 +707,9 @@ sub build_url {
get_date_from_form retrieves the date specified in an &date_setter form.
-Inputs:
+=over
+
+=item Inputs:
=over 4
@@ -755,6 +723,8 @@ The unix time to use as the default in c
=back
+=back
+
Returns: Unix time represented in the form.
=cut
@@ -926,7 +896,9 @@ sub javascript_docopen {
Returns html for a selection box which allows the user to choose the
enrollment status of students. The selection box name is 'Status'.
-Inputs:
+=over
+
+=item Inputs:
$status: the currently selected status. If undefined the value of
$env{'form.Status'} is taken. If that is undefined, a value of 'Active'
@@ -940,6 +912,8 @@ $size: the size (number of lines) of the
$onchange: javascript to use when the value is changed. Enclosed in
double quotes, ""s, not single quotes.
+=back
+
Returns: a perl string as described.
=cut
@@ -987,7 +961,7 @@ sub StatusOptions {
=pod
-=item Progess Window Handling Routines
+=item Progress Window Handling Routines
These routines handle the creation, update, increment, and closure of
progress windows. The progress window reports to the user the number
@@ -1001,28 +975,30 @@ of items completed and an estimate of th
Writes javascript to the client to open a progress window and returns a
data structure used for bookkeeping.
-Inputs
+=over
-=over 4
+=item Inputs
+
+=over
=item $r Apache request
=item $number_to_do The total number of items being processed.
-=item $preamble Optional HTML to display before the progress bar.
+=back
=back
Returns a hash containing the progress state data structure.
-If $number_to_do is zero or null, an indeterminate progress bar will
-be used.
=item &Update_PrgWin()
Updates the text in the progress indicator. Does not increment the count.
See &Increment_PrgWin.
-Inputs:
+=over
+
+=item Inputs:
=over 4
@@ -1034,25 +1010,38 @@ Inputs:
=back
+=back
+
Returns: none
-=item Increment_PrgWin()
+=item &Increment_PrgWin()
Increment the count of items completed for the progress window by $step or 1 if no step is provided.
-Inputs:
+=over
+
+=item Inputs:
=over 4
-=item $r Apache request
+=item $r
-=item $prog_state Pointer to the data structure returned by Create_PrgWin
+Apache request
-=item $extraInfo A description of the items being iterated over. Typically
-'student'.
+=item $prog_state
-=item $step (optional) counter step. Will be set to default 1 if ommited. step must be greater than 0 or empty.
+Pointer to the data structure returned by Create_PrgWin
+
+=item $extraInfo
+
+A description of the items being iterated over. Typically 'student'.
+
+=item $step
+
+(optional) counter step. Will be set to default 1 if ommited. step must be greater than 0 or empty.
+
+=back
=back
@@ -1063,7 +1052,9 @@ Returns: none
Closes the progress window.
-Inputs:
+=over
+
+=item Inputs:
=over 4
@@ -1073,6 +1064,8 @@ Inputs:
=back
+=back
+
Returns: none
=back
@@ -1085,20 +1078,20 @@ Returns: none
# Create progress
sub Create_PrgWin {
- my ($r,$number_to_do,$preamble)=@_;
+ my ($r,$number_to_do)=@_;
my %prog_state;
$prog_state{'done'}=0;
$prog_state{'firststart'}=&Time::HiRes::time();
$prog_state{'laststart'}=&Time::HiRes::time();
$prog_state{'max'}=$number_to_do;
- &Apache::loncommon::LCprogressbar($r,$prog_state{'max'},$preamble);
+ &Apache::loncommon::LCprogressbar($r);
return %prog_state;
}
# update progress
sub Update_PrgWin {
my ($r,$prog_state,$displayString)=@_;
- &Apache::loncommon::LCprogressbarUpdate($r,undef,$displayString,$$prog_state{'max'});
+ &Apache::loncommon::LCprogressbarUpdate($r,undef,$displayString);
$$prog_state{'laststart'}=&Time::HiRes::time();
}
@@ -1148,7 +1141,7 @@ sub Increment_PrgWin {
if ($$prog_state{'max'}) {
$percent=int(100.*$current/$$prog_state{'max'});
}
- &Apache::loncommon::LCprogressbarUpdate($r,$percent,$timeinfo,$$prog_state{'max'});
+ &Apache::loncommon::LCprogressbarUpdate($r,$percent,$timeinfo);
$$prog_state{'laststart'}=&Time::HiRes::time();
}
@@ -1163,9 +1156,9 @@ sub Close_PrgWin {
# ------------------------------------------------------- Puts directory header
sub crumbs {
- my ($uri,$target,$prefix,$form,$skiplast,$onclick)=@_;
+ my ($uri,$target,$prefix,$form,$skiplast)=@_;
# You cannot crumbnify uploaded or adm resources
- if ($uri=~/^\/*(uploaded|adm)\//) { return &mt('(Internal Course/Community Content)'); }
+ if ($uri=~/^\/*(uploaded|adm)\//) { return &mt('(Internal Course/Group Content)'); }
if ($target) {
$target = ' target="'.
&Apache::loncommon::escape_single($target).'"';
@@ -1185,19 +1178,13 @@ sub crumbs {
} else {
$path.='/';
}
- if ($path eq '/res/') {
- unless (&Apache::lonnet::allowed('bre',$path)) {
- $output.="$dir/";
- next;
- }
- }
my $href_path = &HTML::Entities::encode($path,'<>&"');
&Apache::loncommon::inhibit_menu_check(\$href_path);
if ($form) {
my $href = 'javascript:'.$form.".action='".$href_path."';".$form.'.submit();';
- $output.=qq{$dir/};
+ $output.=qq{$dir/};
} else {
- $output.=qq{$dir/};
+ $output.=qq{$dir/};
}
}
} else {
@@ -1268,9 +1255,9 @@ sub htmlareaheaders {
ENDEDITOR
}
$s.=(<
-
-
+
+
+
@@ -1680,7 +1667,7 @@ sub show_return_link {
$env{'request.uri'}=~m{^/priv/}) { return 1; }
return if ($env{'request.noversionuri'} eq '/adm/supplemental');
- if (($env{'request.noversionuri'} =~ m{^/adm/viewclasslist($|\?)})
+ if (($env{'request.noversionuri'} =~ m{^/adm/(viewclasslist|navmaps)($|\?)})
|| ($env{'request.noversionuri'} =~ m{^/adm/.*/aboutme($|\?)})) {
return if ($env{'form.register'});
@@ -1753,54 +1740,6 @@ clientTime = (new Date()).getTime();
END
}
-##
-# Client-side javascript to convert any dashes in text pasted
-# into textbox(es) for numericalresponse item(s) to a standard
-# minus, i.e., - . Calls to dash_to_minus_js() in end_problem()
-# and in loncommon::endbodytag() for a .page (arg: dashjs => 1)
-#
-# Will apply to any input tag with class: LC_numresponse_text.
-# Currently set in start_textline for numericalresponse items.
-#
-
-sub dash_to_minus_js {
- return <<'ENDJS';
-
-
-
-ENDJS
-}
-
############################################################
############################################################
@@ -1815,19 +1754,37 @@ A link to help for the component will be
All inputs can be undef without problems.
-Inputs: $component (the text on the right side of the breadcrumbs trail),
- $component_help (the help item filename (without .tex extension).
- $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)
- $no_mt (optional flag, 1 if &mt() is _not_ to be applied to $component
- when including the text on the right.
- $CourseBreadcrumbs (optional flag, 1 if &breadcrumbs called from &docs_breadcrumbs,
- because breadcrumbs are being)
- $topic_help (optional help item to be displayed on right side of the breadcrumbs
- row, using loncommon::help_open_topic() to generate the link.
- $topic_help_text (text to include in the link in the optional help item
- on the right side of the breadcrumbs row.
+=over
+
+=item Inputs:
+
+=over
+
+=item $component
+
+the text on the right side of the breadcrumbs trail
+
+=item $component_help
+
+=item $menulink
+
+boolean, controls whether to include a link to /adm/menu
+
+=item $helplink
+
+if 'nohelp' don't include the orange help link
+
+=item $css_class
+
+optional name for the class to apply to the table for CSS
+
+=item $no_mt
+
+optional flag, 1 if &mt() is _not_ to be applied to $component when including the text on the right
+
+=back
+
+=back
Returns a string containing breadcrumbs for the current page.
@@ -1856,7 +1813,7 @@ returns: nothing
sub breadcrumbs {
my ($component,$component_help,$menulink,$helplink,$css_class,$no_mt,
- $CourseBreadcrumbs,$topic_help,$topic_help_text) = @_;
+ $CourseBreadcrumbs) = @_;
#
$css_class ||= 'LC_breadcrumbs';
@@ -1881,7 +1838,7 @@ returns: nothing
$env{'course.'.$env{'request.course.id'}.'.description'};
$no_mt_descr = 1;
if ($env{'request.noversionuri'} =~
- m{^/?public/($match_domain)/($match_courseid)/syllabus$}) {
+ m{^/public/($match_domain)/($match_courseid)/syllabus$}) {
unless (($env{'course.'.$env{'request.course.id'}.'.domain'} eq $1) &&
($env{'course.'.$env{'request.course.id'}.'.num'} eq $2)) {
$description = 'Menu';
@@ -1963,10 +1920,6 @@ returns: nothing
$component_help,
$faq,$bug);
}
- if ($topic_help && $topic_help_text) {
- $icons .= ' '.&Apache::loncommon::help_open_topic($topic_help,&mt($topic_help_text),'',
- undef,600);
- }
#
@@ -1979,7 +1932,7 @@ returns: nothing
}
- if (($component) || ($topic_help && $topic_help_text)) {
+ if ($component) {
$links = &htmltag('span',
( $no_mt ? $component : mt($component) ).
( $icons ? $icons : '' ),
@@ -2034,7 +1987,9 @@ Adds $html to $category of the breadcrum
$html is usually a link to a page that invokes a function on the currently
displayed data (e.g. print when viewing a problem)
-Currently there are 3 possible values for $category:
+=over
+
+=item Currently there are 3 possible values for $category:
=over
@@ -2048,7 +2003,9 @@ remaining items in right of breadcrumbs
advanced tools shown in a separate box below breadcrumbs line
=back
-
+
+=back
+
returns: nothing
=cut
@@ -2082,23 +2039,22 @@ returns: nothing
undef(%tools);
}
-=item ¤t_breadcrumb_tools()
+=item &render_tools(\$breadcrumbs)
-returns: a hash containing the current breadcrumb tools.
+Creates html for breadcrumb tools (categories navigation and tools) and inserts
+\$breadcrumbs at the correct position.
-=cut
+=over
- sub current_breadcrumb_tools {
- return %tools;
- }
+=item input:
-=item &render_tools(\$breadcrumbs)
+=over
-Creates html for breadcrumb tools (categories navigation and tools) and inserts
-\$breadcrumbs at the correct position.
+=item \$breadcrumbs - a reference to the string containing prepared breadcrumbs.
+
+=back
-input: \$breadcrumbs - a reference to the string containing prepared
-breadcrumbs.
+=back
returns: nothing
@@ -2124,8 +2080,17 @@ returns: nothing
Creates html for advanced tools (category advtools) and inserts \$breadcrumbs
at the correct position.
-input: \$breadcrumbs - a reference to the string containing prepared
-breadcrumbs (after render_tools call).
+=over
+
+=item input:
+
+=over
+
+=item \$breadcrumbs - a reference to the string containing prepared breadcrumbs (after render_tools call).
+
+=back
+
+=back
returns: nothing
@@ -2158,11 +2123,11 @@ sub docs_breadcrumbs {
my $foldername=shift(@folders);
if ($folderpath) {$folderpath.='&';}
$folderpath.=$folder.'&'.$foldername;
- my $url = $env{'request.use_absolute'};
+ my $url;
if ($allowed) {
- $url .= '/adm/coursedocs?folderpath=';
+ $url = '/adm/coursedocs?folderpath=';
} else {
- $url .= '/adm/supplemental?folderpath=';
+ $url = '/adm/supplemental?folderpath=';
}
$url .= &escape($folderpath);
my $name=&unescape($foldername);
@@ -2454,7 +2419,7 @@ sub course_selection {
if ($totcodes > 0) {
my $numtitles = @$codetitles;
if ($numtitles > 0) {
- $output .= ' ';
+ $output .= ' ';
$output .= '