--- loncom/interface/loncourserespicker.pm 2015/06/09 21:22:56 1.13
+++ loncom/interface/loncourserespicker.pm 2018/01/12 13:33:38 1.15
@@ -1,6 +1,6 @@
# The LearningOnline Network
#
-# $Id: loncourserespicker.pm,v 1.13 2015/06/09 21:22:56 damieng Exp $
+# $Id: loncourserespicker.pm,v 1.15 2018/01/12 13:33:38 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -39,6 +39,7 @@ resources are to be either:
(a) exported to an IMS Content Package
(b) subject to access blocking for the duriation of an exam/quiz.
(c) dumped to an Authoring Space
+(d) receive shortened URLs to be used when deep-linking into a course
=head1 DESCRIPTION
@@ -75,12 +76,13 @@ select items. Checking a folder causes
within the folder. Unchecking a resource causing unchecking of folders
containing the item back up to the top level.
-Inputs: 9.
+Inputs: 11.
- $navmap -- Reference to LON-CAPA navmap object
(encapsulates information about resources in the course).
- $context -- Context in which course resource selection is being made.
- Currently imsexport and examblock are supported.
+ Currently imsexport, examblock, dumpdocs, and shorturls
+ are supported.
- $formname -- Name of the form in the window from which the pop-up
used to select course items was launched.
@@ -107,6 +109,13 @@ Inputs: 9.
- $uploadedfiles -- Reference to hash: keys are paths to files in
/home/httpd/lonUsers/$cdom/$1/$2/$3/$cnum/userfiles.
+ - $tiny -- Reference to hash: keys are symbs of course items for which
+ shortened URLs have already been created.
+
+ - $readonly -- if true, no "check all" or "uncheck all" buttons will
+ be displayed, and checkboxes will be disabled, if this
+ is for an exam block or for shortened URL creation.
+
Output: $output is the HTML mark-up for display/selection of content
items in the pop-up window.
@@ -206,9 +215,15 @@ use Apache::lonlocal;
use LONCAPA qw(:DEFAULT :match);
sub create_picker {
- my ($navmap,$context,$formname,$crstype,$blockedmaps,$blockedresources,$block,$preamble,$numhome,$uploadedfiles) = @_;
+ my ($navmap,$context,$formname,$crstype,$blockedmaps,$blockedresources,$block,$preamble,
+ $numhome,$uploadedfiles,$tiny,$readonly) = @_;
return unless (ref($navmap));
- my ($it,$output,$numdisc,%maps,%resources,%discussiontime,%currmaps,%currresources,%files);
+ my ($it,$output,$numdisc,%maps,%resources,%discussiontime,%currmaps,%currresources,%files,
+ %shorturls,$chkname);
+ $chkname = 'archive';
+ if ($context eq 'shorturls') {
+ $chkname = 'addtiny';
+ }
$it = $navmap->getIterator(undef,undef,undef,1,undef,undef);
if (ref($blockedmaps) eq 'HASH') {
%currmaps = %{$blockedmaps};
@@ -217,6 +232,8 @@ sub create_picker {
%currresources = %{$blockedresources};
} elsif (ref($uploadedfiles) eq 'HASH') {
%files = %{$uploadedfiles};
+ } elsif (ref($tiny) eq 'HASH') {
+ %shorturls = %{$tiny};
}
my @checked_maps;
my $curRes;
@@ -236,27 +253,38 @@ sub create_picker {
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
my $crsprefix = &propath($cdom,$cnum).'/userfiles/';
- my ($info,$display,$onsubmit,$togglebuttons);
+ my ($info,$display,$onsubmit,$togglebuttons,$disabled);
if ($context eq 'examblock') {
my $maps_elem = 'docs_maps_'.$block;
my $res_elem = 'docs_resources_'.$block;
$onsubmit = ' onsubmit="return writeToOpener('."'$maps_elem','$res_elem'".');"';
$info = &mt('Items in '.lc($crstype).' for which access will be blocked.');
+ if ($readonly) {
+ $disabled = ' disabled="disabled"';
+ }
}
if ($context eq 'dumpdocs') {
$info = ''.
&mt('Choose the uploaded course items and templated pages/problems to be copied to Authoring Space.').
'
';
$startcount = 3 + $numhome;
- $onsubmit = ' onsubmit="return checkUnique(document.'.$formname.',document.'.$formname.'.archive);"';
+ $onsubmit = ' onsubmit="return checkUnique(document.'.$formname.',document.'.$formname.'.'.$chkname.');"';
+ } elsif ($context eq 'shorturls') {
+ $info = ''.
+ &mt('Choose the resource(s) and/or folder(s) from Main Content for which shortened URL(s) are needed.').
+ '
';
} elsif ($context eq 'imsexport') {
$info = &mt('Choose which items you wish to export from your '.$crstype.'.');
$startcount = 5;
}
- $togglebuttons = ''.
- ' ';
+ if ($disabled) {
+ $togglebuttons = '
';
+ } else {
+ $togglebuttons = ''.
+ ' ';
+ }
$display = '