--- loncom/interface/loncommon.pm 2007/08/02 01:07:00 1.558
+++ loncom/interface/loncommon.pm 2007/08/18 00:01:37 1.565
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.558 2007/08/02 01:07:00 albertel Exp $
+# $Id: loncommon.pm,v 1.565 2007/08/18 00:01:37 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1084,6 +1084,63 @@ sub changable_area {
=pod
+=item * resize_textarea_js
+
+emits the needed javascript to resize a textarea to be as big as possible
+
+creates a function resize_textrea that takes two IDs first should be
+the id of the element to resize, second should be the id of a div that
+surrounds everything that comes after the textarea, this routine needs
+to be attached to the
for the onload and onresize events.
+
+
+=cut
+
+sub resize_textarea_js {
+ return <<"RESIZE";
+
+RESIZE
+
+}
+
+=pod
+
=back
=head1 Excel and CSV file utility routines
@@ -1424,7 +1481,7 @@ sub select_level_form {
=pod
-=item * select_dom_form($defdom,$name,$includeempty)
+=item * select_dom_form($defdom,$name,$includeempty,$showdomdesc)
Returns a string containing a form to
allow a user to select the domain to preform an operation in.
@@ -1433,18 +1490,28 @@ See loncreateuser.pm for an example invo
If the $includeempty flag is set, it also includes an empty choice ("no domain
selected");
+If the $showdomdesc flag is set, the domain name is followed by the domain description.
+
=cut
#-------------------------------------------
sub select_dom_form {
- my ($defdom,$name,$includeempty) = @_;
+ my ($defdom,$name,$includeempty,$showdomdesc) = @_;
my @domains = sort {lc($a) cmp lc($b)} (&Apache::lonnet::all_domains());
if ($includeempty) { @domains=('',@domains); }
my $selectdomain = "\n";
foreach my $dom (@domains) {
$selectdomain.="$dom \n";
+ ($dom eq $defdom ? 'selected="selected" ' : '').'>'.$dom;
+ if ($showdomdesc) {
+ if ($dom ne '') {
+ my $domdesc = &Apache::lonnet::domain($dom,'description');
+ if ($domdesc ne '') {
+ $selectdomain .= ' ('.$domdesc.')';
+ }
+ }
+ }
+ $selectdomain .= "\n";
}
$selectdomain.=" ";
return $selectdomain;
@@ -3397,6 +3464,9 @@ Inputs:
=item * $args, optional argument valid values are
no_auto_mt_title -> prevents &mt()ing the title arg
+ inherit_jsmath -> when creating popup window in a page,
+ should it have jsmath forced on by the
+ current page
=back
@@ -3453,7 +3523,7 @@ sub bodytag {
# construct main body tag
my $bodytag = "".
- &Apache::lontexconvert::init_math_support();
+ &Apache::lontexconvert::init_math_support($args->{'inherit_jsmath'});
if ($bodyonly) {
return $bodytag;
@@ -4711,6 +4781,10 @@ Inputs: $title - optional title for the
no_auto_mt_title -> prevent &mt()ing the title arg
+ inherit_jsmath -> when creating popup window in a page,
+ should it have jsmath forced on by the
+ current page
+
=cut
sub start_page {
@@ -5557,12 +5631,8 @@ sub user_picker {
}
$srchterm = $srch->{'srchterm'};
}
- use Data::Dumper;
- &Apache::lonnet::logthis(&Dumper($srch));
my %lt=&Apache::lonlocal::texthash(
- 'usr' => 'Search for',
- 'or' => 'or',
- 'doma' => 'domain',
+ 'doma' => 'Domain/institution to search',
'uname' => 'username',
'lastname' => 'last name',
'lastfirst' => 'last name, first name',
@@ -5573,9 +5643,8 @@ sub user_picker {
'exact' => 'is',
'contains' => 'contains',
);
- my $domform = &select_dom_form($currdom,'srchdomain',1);
-
- my $srchin;
+ my $domform = &select_dom_form($currdom,'srchdomain',1,1);
+ my $srchinsel = ' ';
my @srchins = ('crs','dom','alc','instd');
@@ -5585,18 +5654,15 @@ sub user_picker {
# has been completed.
next if ($option eq 'alc');
next if ($option eq 'crs' && !$env{'request.course.id'});
- my $checked =($curr_selected{'srchin'} eq $option) ?'checked="checked"'
- :'';
- my $extra = ($option eq 'dom') ? $domform
- : '';
- $srchin.=<
-
- $lt{$option} $extra
-
-
-ROW
+ if ($curr_selected{'srchin'} eq $option) {
+ $srchinsel .= '
+ '.$lt{$option}.' ';
+ } else {
+ $srchinsel .= '
+ '.$lt{$option}.' ';
+ }
}
+ $srchinsel .= "\n
\n";
my $srchbysel = ' ';
foreach my $option ('uname','lastname','lastfirst') {
@@ -5636,8 +5702,8 @@ function setSearch(createnew) {
}
}
for (var i=0; i
- $srchbysel
- $srchtypesel
-
+ $srchbysel
+ $srchtypesel
+
+ $srchinsel
+
+
+
+ $lt{'doma'}: $domform
-$srchin
END_BLOCK
@@ -5996,28 +6067,50 @@ sub record_sep {
$i++;
}
} else {
- my @allfields;
+ my $separator=',';
if ($env{'form.upfiletype'} eq 'semisv') {
- @allfields=split(/;/,$record,-1);
- } else {
- @allfields=split(/\,/,$record,-1);
+ $separator=';';
}
my $i=0;
- my $j;
- for ($j=0;$j<=$#allfields;$j++) {
- my $field=$allfields[$j];
- if ($field=~/^\s*(\"|\')/) {
- my $delimiter=$1;
- while (($field!~/$delimiter$/) && ($j<$#allfields)) {
- $j++;
- $field.=','.$allfields[$j];
- }
- $field=~s/^\s*$delimiter//;
- $field=~s/$delimiter\s*$//;
- }
- $components{&takeleft($i)}=$field;
- $i++;
+# the character we are looking for to indicate the end of a quote or a record
+ my $looking_for=$separator;
+# do not add the characters to the fields
+ my $ignore=0;
+# we just encountered a separator (or the beginning of the record)
+ my $just_found_separator=1;
+# store the field we are working on here
+ my $field='';
+# work our way through all characters in record
+ foreach my $character ($record=~/(.)/g) {
+ if ($character eq $looking_for) {
+ if ($character ne $separator) {
+# Found the end of a quote, again looking for separator
+ $looking_for=$separator;
+ $ignore=1;
+ } else {
+# Found a separator, store away what we got
+ $components{&takeleft($i)}=$field;
+ $i++;
+ $just_found_separator=1;
+ $ignore=0;
+ $field='';
+ }
+ next;
+ }
+# single or double quotation marks after a separator indicate beginning of a quote
+# we are now looking for the end of the quote and need to ignore separators
+ if ((($character eq '"') || ($character eq "'")) && ($just_found_separator)) {
+ $looking_for=$character;
+ next;
+ }
+# ignore would be true after we reached the end of a quote
+ if ($ignore) { next; }
+ if (($just_found_separator) && ($character=~/\s/)) { next; }
+ $field.=$character;
+ $just_found_separator=0;
}
+# catch the very last entry, since we never encountered the separator
+ $components{&takeleft($i)}=$field;
}
return %components;
}