--- loncom/interface/loncommon.pm 2013/05/26 22:44:02 1.1075.2.38
+++ loncom/interface/loncommon.pm 2013/04/11 16:30:37 1.1122
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# a pile of common routines
#
-# $Id: loncommon.pm,v 1.1075.2.38 2013/05/26 22:44:02 raeburn Exp $
+# $Id: loncommon.pm,v 1.1122 2013/04/11 16:30:37 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -72,6 +72,7 @@ use Apache::lonuserstate();
use LONCAPA qw(:DEFAULT :match);
use DateTime::TimeZone;
use DateTime::Locale::Catalog;
+use Text::Aspell;
use Authen::Captcha;
use Captcha::reCAPTCHA;
@@ -158,6 +159,7 @@ sub ssi_with_retries {
# ----------------------------------------------- Filetypes/Languages/Copyright
my %language;
my %supported_language;
+my %supported_codes;
my %latex_language; # For choosing hyphenation in
my %latex_language_bykey; # for choosing hyphenation from metadata
my %cprtag;
@@ -192,14 +194,15 @@ BEGIN {
while (my $line = <$fh>) {
next if ($line=~/^\#/);
chomp($line);
- my ($key,$two,$country,$three,$enc,$val,$sup,$latex)=(split(/\t/,$line));
+ my ($key,$code,$country,$three,$enc,$val,$sup,$latex)=(split(/\t/,$line));
$language{$key}=$val.' - '.$enc;
if ($sup) {
$supported_language{$key}=$sup;
+ $supported_codes{$key} = $code;
}
if ($latex) {
$latex_language_bykey{$key} = $latex;
- $latex_language{$two} = $latex;
+ $latex_language{$code} = $latex;
}
}
close($fh);
@@ -663,7 +666,7 @@ if (!Array.prototype.indexOf) {
var n = 0;
if (arguments.length > 0) {
n = Number(arguments[1]);
- if (n !== n) { // shortcut for verifying if it's NaN
+ if (n !== n) { // shortcut for verifying if it is NaN
n = 0;
} else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) {
n = (n > 0 || -1) * Math.floor(Math.abs(n));
@@ -899,12 +902,12 @@ sub check_uncheck_jscript {
function checkAll(field) {
if (field.length > 0) {
for (i = 0; i < field.length; i++) {
- if (!field[i].disabled) {
+ if (!field[i].disabled) {
field[i].checked = true;
}
}
} else {
- if (!field.disabled) {
+ if (!field.disabled) {
field.checked = true;
}
}
@@ -1014,6 +1017,33 @@ sub select_language {
=pod
+
+=item * &list_languages()
+
+Returns an array reference that is suitable for use in language prompters.
+Each array element is itself a two element array. The first element
+is the language code. The second element a descsriptiuon of the
+language itself. This is suitable for use in e.g.
+&Apache::edit::select_arg (once dereferenced that is).
+
+=cut
+
+sub list_languages {
+ my @lang_choices;
+
+ foreach my $id (&languageids()) {
+ my $code = &supportedlanguagecode($id);
+ if ($code) {
+ my $selector = $supported_codes{$id};
+ my $description = &plainlanguagedescription($id);
+ push (@lang_choices, [$selector, $description]);
+ }
+ }
+ return \@lang_choices;
+}
+
+=pod
+
=item * &linked_select_forms(...)
linked_select_forms returns a string containing a block
@@ -2161,7 +2191,7 @@ sub select_level_form {
=pod
-=item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoma,$excdoms)
+=item * &select_dom_form($defdom,$name,$includeempty,$showdomdesc,$onchange,$incdoms,$excdoms)
Returns a string containing a
';
}
- if ($context eq 'syllabus') {
- unless ($saveresult eq 'ok') {
- $skiprewrites = 1;
- }
- }
} else {
if (open(my $fh,">$container")) {
print $fh $content;
@@ -10471,47 +10418,6 @@ sub modify_html_refs {
}
}
}
- if (($context eq 'syllabus') && (!$skiprewrites)) {
- my ($actionurl,$state);
- $actionurl = "/public/$udom/$uname/syllabus";
- my ($ignore,$num,$numpathchanges,$existing,$mapping) =
- &ask_for_embedded_content($actionurl,$state,\%allfiles,
- \%codebase,
- {'context' => 'rewrites',
- 'ignore_remote_references' => 1,});
- if (ref($mapping) eq 'HASH') {
- my $rewrites = 0;
- foreach my $key (keys(%{$mapping})) {
- next if ($key =~ m{^https?://});
- my $ref = $mapping->{$key};
- my $newname = "/uploaded/$udom/$uname/portfolio/syllabus/$key";
- my $attrib;
- if (ref($allfiles{$mapping->{$key}}) eq 'ARRAY') {
- $attrib = join('|',@{$allfiles{$mapping->{$key}}});
- }
- if ($content =~ m{($attrib\s*=\s*['"]?)\Q$ref\E(['"]?)}) {
- my $numchg = ($content =~ s{($attrib\s*=\s*['"]?)\Q$ref\E(['"]?)}{$1$newname$2}gi);
- $rewrites += $numchg;
- }
- }
- if ($rewrites) {
- my $saveresult;
- my $url = &Apache::lonnet::store_edited_file($container,$content,$udom,$uname,\$saveresult);
- if ($url eq $container) {
- my ($fname) = ($container =~ m{/([^/]+)$});
- $output .= '
'.&mt('Rewrote [quant,_1,link] as [quant,_1,absolute link] in [_2].',
- $count,''.
- $fname.'').'
';
- } else {
- $output .= '
'.
- &mt('Error: could not update links in [_1].',
- ''.
- $container.'').'
';
-
- }
- }
- }
- }
} else {
&logthis('Failed to parse '.$container.
' to modify references: '.$parse_result);
@@ -11504,7 +11410,7 @@ sub process_extracted_files {
$folders{'0'} = $items[-2];
if ($env{'form.folderpath'} =~ /\:1$/) {
$containers{'0'}='page';
- } else {
+ } else {
$containers{'0'}='sequence';
}
}
@@ -11624,7 +11530,7 @@ sub process_extracted_files {
}
}
} else {
- $warning .= &mt('Item extracted from archive: [_1] has unexpected path.',$path).' ';
+ $warning .= &mt('Item extracted from archive: [_1] has unexpected path.',$path).' ';
}
}
for (my $i=1; $i<=$numitems; $i++) {
@@ -11646,7 +11552,7 @@ sub process_extracted_files {
}
if ($itemidx eq '') {
$itemidx = 0;
- }
+ }
if (grep(/^\Q$referrer{$i}\E$/,@archdirs)) {
if ($mapinner{$referrer{$i}}) {
$fullpath = "$prefix$dir/$docstype/$mapinner{$referrer{$i}}";
@@ -11693,12 +11599,12 @@ sub process_extracted_files {
$showpath = "$relpath/$title";
} else {
$showpath = "/$title";
- }
+ }
$result .= '
'.&mt('[_1] included as a dependency',$showpath).'
'."\n";
- }
+ }
unless ($ishome) {
my $fetch = "$fullpath/$title";
- $fetch =~ s/^\Q$prefix$dir\E//;
+ $fetch =~ s/^\Q$prefix$dir\E//;
$prompttofetch{$fetch} = 1;
}
}
@@ -11708,7 +11614,7 @@ sub process_extracted_files {
$path,$env{'form.archive_content_'.$referrer{$i}}).' ';
}
} else {
- $warning .= &mt('Item extracted from archive: [_1] has unexpected path.',$path).' ';
+ $warning .= &mt('Item extracted from archive: [_1] has unexpected path.',$path).' ';
}
}
if (keys(%todelete)) {
@@ -11814,7 +11720,7 @@ sub get_folder_hierarchy {
my @pcs = split(/,/,$pcslist);
foreach my $pc (@pcs) {
if ($pc == 1) {
- push(@pathitems,&mt('Main Content'));
+ push(@pathitems,&mt('Main Course Documents'));
} else {
my $res = $navmap->getByMapPc($pc);
if (ref($res)) {
@@ -11829,7 +11735,7 @@ sub get_folder_hierarchy {
}
if ($showitem) {
if ($mapres->{ID} eq '0.0') {
- push(@pathitems,&mt('Main Content'));
+ push(@pathitems,&mt('Main Course Documents'));
} else {
my $maptitle = $mapres->compTitle();
$maptitle =~ s/\W+/_/g;
@@ -13430,7 +13336,7 @@ sub commit_studentrole {
}
}
} else {
- if ($secchange) {
+ if ($secchange) {
$$logmsg .= &mt('Error when attempting section change for [_1] from old section "[_2]" to new section: "[_3]" in course [_4] -error:',$uname,$oldsec,$sec,$cid).' '.$modify_section_result.$linefeed;
} else {
$$logmsg .= &mt('Error when attempting to modify role for [_1] for section: "[_2]" in course [_3] -error:',$uname,$sec,$cid).' '.$modify_section_result.$linefeed;
@@ -14142,7 +14048,7 @@ sub init_user_environment {
my %reqauthor = &Apache::lonnet::get('requestauthor',['author_status','author'],
$domain,$username);
my $reqstatus = $reqauthor{'author_status'};
- if ($reqstatus eq 'approval' || $reqstatus eq 'approved') {
+ if ($reqstatus eq 'approval' || $reqstatus eq 'approved') {
if (ref($reqauthor{'author'}) eq 'HASH') {
$userenv{'requestauthorqueued'} = $reqstatus.':'.
$reqauthor{'author'}{'timestamp'};
@@ -14390,7 +14296,7 @@ sub symb_to_docspath {
$path =~ s/^\&//;
my $maptitle = $mapresobj->title();
if ($mapurl eq 'default') {
- $maptitle = 'Main Content';
+ $maptitle = 'Main Course Documents';
}
$path .= (($path ne '')? '&' : '').
&Apache::lonhtmlcommon::entity_encode($mapurl).'&'.
@@ -14404,14 +14310,14 @@ sub symb_to_docspath {
my $maptitle = &Apache::lonnet::gettitle($mapurl);
my $ispage = (($type eq 'page')? 1 : '');
if ($mapurl eq 'default') {
- $maptitle = 'Main Content';
+ $maptitle = 'Main Course Documents';
}
$path = &Apache::lonhtmlcommon::entity_encode($mapurl).'&'.
&Apache::lonhtmlcommon::entity_encode($maptitle).':::::'.$ispage;
}
unless ($mapurl eq 'default') {
$path = 'default&'.
- &Apache::lonhtmlcommon::entity_encode('Main Content').
+ &Apache::lonhtmlcommon::entity_encode('Main Course Documents').
':::::&'.$path;
}
return $path;
@@ -14424,12 +14330,12 @@ sub captcha_display {
if ($captcha eq 'original') {
$output = &create_captcha();
unless ($output) {
- $error = 'captcha';
+ $error = 'captcha';
}
} elsif ($captcha eq 'recaptcha') {
$output = &create_recaptcha($pubkey);
unless ($output) {
- $error = 'recaptcha';
+ $error = 'recaptcha';
}
}
return ($output,$error);