--- loncom/interface/londocs.pm 2007/01/29 21:18:53 1.271
+++ loncom/interface/londocs.pm 2007/06/28 23:26:46 1.278.2.1
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Documents
#
-# $Id: londocs.pm,v 1.271 2007/01/29 21:18:53 albertel Exp $
+# $Id: londocs.pm,v 1.278.2.1 2007/06/28 23:26:46 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -904,15 +904,16 @@ sub store_template {
# Imports the given (name, url) resources into the course
# coursenum, coursedom, and folder must precede the list
sub group_import {
- my $coursenum = shift;
- my $coursedom = shift;
- my $folder = shift;
- my $container = shift;
- my $caller = shift;
- while (@_) {
- my $name = shift;
- my $url = shift;
- if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$}) && ($caller eq 'londocs')) {
+ my ($coursenum, $coursedom, $folder, $container, $caller, @files) = @_;
+
+ while (@files) {
+ my $name = shift(@files);
+ my $url = shift(@files);
+ #FIXME check if file exists before overwriting, might be restoring it
+ if (($url =~ m{^/uploaded/\Q$coursedom\E/\Q$coursenum\E/(default_\d+\.)(page|sequence)$})
+ && ($caller eq 'londocs')
+ && (!&Apache::lonnet::stat_file($url))) {
+
my $errtext = '';
my $fatal = 0;
my $newmapstr = ''."\n".
@@ -936,8 +937,8 @@ sub group_import {
$LONCAPA::map::order[$#LONCAPA::map::order+1]=$idx;
my $ext = 'false';
if ($url=~m{^http://} || $url=~m{^https://}) { $ext = 'true'; }
- $url =~ &LONCAPA::map::qtunescape($url);
- $name =~ &LONCAPA::map::qtunescape($name);
+ $url = &LONCAPA::map::qtunescape($url);
+ $name = &LONCAPA::map::qtunescape($name);
$LONCAPA::map::resources[$idx] =
join ':', ($name, $url, $ext, 'normal', 'res');
}
@@ -966,6 +967,7 @@ sub breadcrumbs {
my $randompick=-1;
my $isencrypted=0;
my $ishidden=0;
+ my $is_random_order=0;
while (@folders) {
my $folder=shift(@folders);
my $foldername=shift(@folders);
@@ -975,7 +977,7 @@ sub breadcrumbs {
&escape($folderpath);
my $name=&unescape($foldername);
# randompick number, hidden, encrypted is appended with ":"s to the foldername
- $name=~s/\:(\d*)\:(\w*)\:(\w*)$//;
+ $name=~s/\:(\d*)\:(\w*)\:(\w*):(\d*)$//;
if ($1 ne '') {
$randompick=$1;
} else {
@@ -983,6 +985,7 @@ sub breadcrumbs {
}
if ($2) { $ishidden=1; }
if ($3) { $isencrypted=1; }
+ if ($4 ne '') { $is_random_order = 1; }
&Apache::lonhtmlcommon::add_breadcrumb(
{'href'=>$url.$cpinfo,
'title'=>$name,
@@ -994,7 +997,7 @@ sub breadcrumbs {
}
$plain=~s/\>\;\s*$//;
return (&Apache::lonhtmlcommon::breadcrumbs(undef,undef,0,'nohelp',
- 'LC_docs_path'),$randompick,$ishidden,$isencrypted,$plain);
+ 'LC_docs_path'),$randompick,$ishidden,$isencrypted,$plain,$is_random_order);
}
sub log_docs {
@@ -1085,6 +1088,7 @@ sub docs_change_log {
my %lt=('hiddenresource' => 'Resources hidden',
'encrypturl' => 'URL hidden',
'randompick' => 'Randomly pick',
+ 'randomorder' => 'Randomly ordered',
'set' => 'set to',
'del' => 'deleted');
$r->print(&Apache::loncommon::display_filter().
@@ -1167,7 +1171,7 @@ sub docs_change_log {
$r->print('');
if ($docslog{$id}{'logentry'}{'parameter_res'}) {
$r->print(&LONCAPA::map::qtescape((split(/\:/,$docslog{$id}{'logentry'}{'parameter_res'}))[0]).':');
- foreach my $parameter ('randompick','hiddenresource','encrypturl') {
+ foreach my $parameter ('randompick','hiddenresource','encrypturl','randomorder') {
if ($docslog{$id}{'logentry'}{'parameter_action_'.$parameter}) {
$r->print(''.
&mt($lt{$parameter}.' '.$lt{$docslog{$id}{'logentry'}{'parameter_action_'.$parameter}}.' [_1]',
@@ -1209,7 +1213,7 @@ sub editor {
$env{'form.markedcopy_title'}=$title;
$env{'form.markedcopy_url'}=$url;
}
- my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain)=&breadcrumbs($folder);
+ my ($breadcrumbtrail,$randompick,$ishidden,$isencrypted,$plain,$is_random_order)=&breadcrumbs($folder);
$r->print($breadcrumbtrail);
if ($fatal) {
$r->print(''.$errtext.'
');
@@ -1250,6 +1254,15 @@ sub editor {
&remember_parms($idx,'encrypturl','del');
}
}
+ if ($env{'form.changeparms'} eq 'randomorder') {
+ if ($env{'form.randorder_'.$idx}) {
+ &LONCAPA::map::storeparameter($idx,'parameter_randomorder','yes','string_yesno');
+ &remember_parms($idx,'randomorder','set',$env{'form.randorder_'.$idx});
+ } else {
+ &LONCAPA::map::delparameter($idx,'parameter_randomorder');
+ &remember_parms($idx,'randomorder','del');
+ }
+ }
# store the changed version
($errtext,$fatal)=&storemap($coursenum,$coursedom,$folder.'.'.$container);
if ($fatal) {
@@ -1434,24 +1447,30 @@ sub editor {
# ---------------------------------------------------------------- Print screen
my $idx=0;
my $shown=0;
- if (($ishidden) || ($isencrypted) || ($randompick>=0)) {
+ if (($ishidden) || ($isencrypted) || ($randompick>=0)
+ || ($is_random_order)) {
$r->print(''.&mt('Parameters').':
'.
($randompick>=0?''.&mt('randomly pick [_1] resources',$randompick).' ':'').
+ ($is_random_order?''.&mt('contents randomly ordered').' ':'').
($ishidden?''.&mt('contents hidden').' ':'').
($isencrypted?''.&mt('URLs hidden').' ':'').
'
');
- }
+ }
if ($randompick>=0) {
$r->print(''.&mt('Caution: this folder is set to randomly pick a subset of resources. Adding or removing resources from this folder will change the set of resources that the students see, resulting in spurious or missing credit for completed problems, not limited to ones you modify. Do not modify the contents of this folder if it is in active student use.').'
');
}
+ if ($is_random_order) {
+ $r->print(''.&mt('Caution: this folder is set to randomly order its contents. Adding or removing resources from this folder will change the order of resources shown. Do not modify the contents of this folder if it is in active student use.').'
');
+ }
$r->print('');
- foreach (@LONCAPA::map::order) {
- my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$_]);
+ foreach my $res (@LONCAPA::map::order) {
+ my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$res]);
$name=&LONCAPA::map::qtescape($name);
$url=&LONCAPA::map::qtescape($url);
unless ($name) { $name=(split(/\//,$url))[-1]; }
unless ($name) { $idx++; next; }
- $r->print(&entryline($idx,$name,$url,$folder,$allowed,$_,$coursenum));
+ $r->print(&entryline($idx,$name,$url,$folder,$allowed,$res,
+ $coursenum));
$idx++;
$shown++;
}
@@ -1465,11 +1484,19 @@ sub editor {
ENDPASTE
- $r->print(
- ' '.&Apache::loncommon::filedescription(
- (split(/\./,$env{'form.markedcopy_url'}))[-1]).': '.
- $env{'form.markedcopy_title'});
+ $r->print(' ');
+
+ my $type;
+ if ($env{'form.markedcopy_url'} =~ m{^/adm/wrapper/ext}) {
+ $type = &mt('External Resource');
+ $r->print($type.': '. $env{'form.markedcopy_title'});
+ } else {
+ my $extension = (split(/\./,$env{'form.markedcopy_url'}))[-1];
+ my $type = &Apache::loncommon::filedescription($extension);
+ my $icon = ' ';
+ $r->print($icon.$type.': '. $env{'form.markedcopy_title'});
+ }
if ($container eq 'page') {
$r->print(<
@@ -1583,14 +1610,19 @@ sub ask_for_embedded_content {
&Apache::loncommon::start_data_table();
my $num = 0;
- foreach my $embed_file (keys(%{$allfiles})) {
+ foreach my $embed_file (sort {lc($a) cmp lc($b)} keys(%{$allfiles})) {
$upload_output .= &Apache::loncommon::start_data_table_row().
''.$embed_file.' ';
- if ($args->{'error_on_invalid_names'}
+ if ($args->{'ignore_remote_references'}
+ && $embed_file =~ m{^\w+://}) {
+ $upload_output.=''.&mt("URL points to other server.").' ';
+ } elsif ($args->{'error_on_invalid_names'}
&& $embed_file ne &Apache::lonnet::clean_filename($embed_file,{'keep_path' => 1,})) {
$upload_output.=''.&mt("Invalid characters").' ';
+
} else {
+
$upload_output .='
';
@@ -1611,7 +1643,8 @@ sub ask_for_embedded_content {
}
$upload_output .= &Apache::loncommon::end_data_table().'
-
+
+ '.&mt('(only files for which a location has been provided will be uploaded)').'
';
return $upload_output;
}
@@ -1873,14 +1906,16 @@ END
.':'.((&LONCAPA::map::getparameter($orderidx,
'parameter_hiddenresource'))[0]=~/^yes$/i)
.':'.((&LONCAPA::map::getparameter($orderidx,
- 'parameter_encrypturl'))[0]=~/^yes$/i);
+ 'parameter_encrypturl'))[0]=~/^yes$/i)
+ .':'.((&LONCAPA::map::getparameter($orderidx,
+ 'parameter_randomorder'))[0]=~/^yes$/i);
$url.='folderpath='.&escape($folderpath).$cpinfo;
$parameterset=''.&mt('Randomly Pick: ').
' '.
-''.&mt('Store').' ';
+''.&mt('Save').' ';
}
if ($ispage) {
@@ -1908,16 +1943,21 @@ END
if (($allowed) && ($folder!~/^supplemental/)) {
my %lt=&Apache::lonlocal::texthash(
'hd' => 'Hidden',
- 'ec' => 'URL hidden');
+ 'ec' => 'URL hidden',
+ 'ro' => 'Random Order',);
my $enctext=
- ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="1"':'');
+ ((&LONCAPA::map::getparameter($orderidx,'parameter_encrypturl'))[0]=~/^yes$/i?' checked="checked"':'');
my $hidtext=
- ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="1"':'');
+ ((&LONCAPA::map::getparameter($orderidx,'parameter_hiddenresource'))[0]=~/^yes$/i?' checked="checked"':'');
+ my $rotext=
+ ((&LONCAPA::map::getparameter($orderidx,'parameter_randomorder'))[0]=~/^yes$/i?' checked="checked"':'');
$line.=(<
$lt{'hd'}
$lt{'ec'}
+
+ $lt{'ro'}
$parameterset
ENDPARMS
}
@@ -2139,9 +2179,9 @@ sub checkversions {
if (&Apache::lonnet::put('resourceversions',\%newsetversions,
$env{'course.'.$env{'request.course.id'}.'.domain'},
$env{'course.'.$env{'request.course.id'}.'.num'}) eq 'ok') {
- $r->print(''.&mt('Your Version Settings have been Stored').' ');
+ $r->print(''.&mt('Your Version Settings have been Saved').' ');
} else {
- $r->print(''.&mt('An Error Occured while Attempting to Store your Version Settings').' ');
+ $r->print(''.&mt('An Error Occured while Attempting to Save your Version Settings').' ');
}
&mark_hash_old();
}