version 1.1075.2.58, 2013/12/19 08:28:05
|
version 1.1075.2.59, 2013/12/27 15:50:34
|
Line 8688 Incoming parameters:
|
Line 8688 Incoming parameters:
|
2. user's domain |
2. user's domain |
3. quota name - portfolio, author, or course |
3. quota name - portfolio, author, or course |
(if no quota name provided, defaults to portfolio). |
(if no quota name provided, defaults to portfolio). |
4. crstype - official, unofficial or community, if quota name is |
4. crstype - official, unofficial, textbook or community, if quota name is |
course |
course |
|
|
Returns: |
Returns: |
Line 8762 sub get_user_quota {
|
Line 8762 sub get_user_quota {
|
if ($quota eq '' || wantarray) { |
if ($quota eq '' || wantarray) { |
if ($quotaname eq 'course') { |
if ($quotaname eq 'course') { |
my %domdefs = &Apache::lonnet::get_domain_defaults($udom); |
my %domdefs = &Apache::lonnet::get_domain_defaults($udom); |
if (($crstype eq 'official') || ($crstype eq 'unofficial') || ($crstype eq 'community')) { |
if (($crstype eq 'official') || ($crstype eq 'unofficial') || |
|
($crstype eq 'community') || ($crstype eq 'textbook')) { |
$defquota = $domdefs{$crstype.'quota'}; |
$defquota = $domdefs{$crstype.'quota'}; |
} |
} |
if ($defquota eq '') { |
if ($defquota eq '') { |
Line 8910 Inputs: 6
|
Line 8911 Inputs: 6
|
4. filename of file for which action is being requested |
4. filename of file for which action is being requested |
5. filesize (kB) of file |
5. filesize (kB) of file |
6. action being taken: copy or upload. |
6. action being taken: copy or upload. |
|
7. quotatype (in course context -- official, unofficial, community or textbook). |
|
|
Returns: 1 scalar: HTML to display containing warning if quota would be exceeded, |
Returns: 1 scalar: HTML to display containing warning if quota would be exceeded, |
otherwise return null. |
otherwise return null. |
Line 8919 Returns: 1 scalar: HTML to display conta
|
Line 8921 Returns: 1 scalar: HTML to display conta
|
=cut |
=cut |
|
|
sub excess_filesize_warning { |
sub excess_filesize_warning { |
my ($uname,$udom,$context,$filename,$filesize,$action) = @_; |
my ($uname,$udom,$context,$filename,$filesize,$action,$quotatype) = @_; |
my $current_disk_usage = 0; |
my $current_disk_usage = 0; |
my $disk_quota = &get_user_quota($uname,$udom,$context); #expressed in MB |
my $disk_quota = &get_user_quota($uname,$udom,$context,$quotatype); #expressed in MB |
if ($context eq 'author') { |
if ($context eq 'author') { |
my $authorspace = $Apache::lonnet::perlvar{'lonDocRoot'}."/priv/$udom/$uname"; |
my $authorspace = $Apache::lonnet::perlvar{'lonDocRoot'}."/priv/$udom/$uname"; |
$current_disk_usage = &Apache::lonnet::diskusage($udom,$uname,$authorspace); |
$current_disk_usage = &Apache::lonnet::diskusage($udom,$uname,$authorspace); |
Line 10998 sub decompress_form {
|
Line 11000 sub decompress_form {
|
} |
} |
} |
} |
if ($mimetype =~ m{^application/(x\-)?(compressed|zip)}) { |
if ($mimetype =~ m{^application/(x\-)?(compressed|zip)}) { |
my @camtasia = ("$topdir/","$topdir/index.html", |
my @camtasia6 = ("$topdir/","$topdir/index.html", |
"$topdir/media/", |
"$topdir/media/", |
"$topdir/media/$topdir.mp4", |
"$topdir/media/$topdir.mp4", |
"$topdir/media/FirstFrame.png", |
"$topdir/media/FirstFrame.png", |
"$topdir/media/player.swf", |
"$topdir/media/player.swf", |
"$topdir/media/swfobject.js", |
"$topdir/media/swfobject.js", |
"$topdir/media/expressInstall.swf"); |
"$topdir/media/expressInstall.swf"); |
my @diffs = &compare_arrays(\@paths,\@camtasia); |
my @camtasia8 = ("$topdir/","$topdir/$topdir.html", |
|
"$topdir/$topdir.mp4", |
|
"$topdir/$topdir\_config.xml", |
|
"$topdir/$topdir\_controller.swf", |
|
"$topdir/$topdir\_embed.css", |
|
"$topdir/$topdir\_First_Frame.png", |
|
"$topdir/$topdir\_player.html", |
|
"$topdir/$topdir\_Thumbnails.png", |
|
"$topdir/playerProductInstall.swf", |
|
"$topdir/scripts/", |
|
"$topdir/scripts/config_xml.js", |
|
"$topdir/scripts/handlebars.js", |
|
"$topdir/scripts/jquery-1.7.1.min.js", |
|
"$topdir/scripts/jquery-ui-1.8.15.custom.min.js", |
|
"$topdir/scripts/modernizr.js", |
|
"$topdir/scripts/player-min.js", |
|
"$topdir/scripts/swfobject.js", |
|
"$topdir/skins/", |
|
"$topdir/skins/configuration_express.xml", |
|
"$topdir/skins/express_show/", |
|
"$topdir/skins/express_show/player-min.css", |
|
"$topdir/skins/express_show/spritesheet.png"); |
|
my @diffs = &compare_arrays(\@paths,\@camtasia6); |
if (@diffs == 0) { |
if (@diffs == 0) { |
$is_camtasia = 1; |
$is_camtasia = 6; |
|
} else { |
|
@diffs = &compare_arrays(\@paths,\@camtasia8); |
|
if (@diffs == 0) { |
|
$is_camtasia = 8; |
|
} |
} |
} |
} |
} |
my $output; |
my $output; |
Line 11019 sub decompress_form {
|
Line 11048 sub decompress_form {
|
function camtasiaToggle() { |
function camtasiaToggle() { |
for (var i=0; i<document.uploaded_decompress.autoextract_camtasia.length; i++) { |
for (var i=0; i<document.uploaded_decompress.autoextract_camtasia.length; i++) { |
if (document.uploaded_decompress.autoextract_camtasia[i].checked) { |
if (document.uploaded_decompress.autoextract_camtasia[i].checked) { |
if (document.uploaded_decompress.autoextract_camtasia[i].value == 1) { |
if (document.uploaded_decompress.autoextract_camtasia[i].value == $is_camtasia) { |
|
|
document.getElementById('camtasia_titles').style.display='block'; |
document.getElementById('camtasia_titles').style.display='block'; |
} else { |
} else { |
document.getElementById('camtasia_titles').style.display='none'; |
document.getElementById('camtasia_titles').style.display='none'; |
Line 11082 ENDCAM
|
Line 11110 ENDCAM
|
if ($is_camtasia) { |
if ($is_camtasia) { |
$output .= $lt{'auto'}.'<br />'. |
$output .= $lt{'auto'}.'<br />'. |
'<span class="LC_nobreak">'.$lt{'proa'}.'<label>'. |
'<span class="LC_nobreak">'.$lt{'proa'}.'<label>'. |
'<input type="radio" name="autoextract_camtasia" value="1" onclick="javascript:camtasiaToggle();" checked="checked" />'. |
'<input type="radio" name="autoextract_camtasia" value="'.$is_camtasia.'" onclick="javascript:camtasiaToggle();" checked="checked" />'. |
$lt{'yes'}.'</label> <label>'. |
$lt{'yes'}.'</label> <label>'. |
'<input type="radio" name="autoextract_camtasia" value="0" onclick="javascript:camtasiaToggle();" />'. |
'<input type="radio" name="autoextract_camtasia" value="0" onclick="javascript:camtasiaToggle();" />'. |
$lt{'no'}.'</label></span><br />'. |
$lt{'no'}.'</label></span><br />'. |
Line 11315 sub process_decompression {
|
Line 11343 sub process_decompression {
|
\%titles,\%children); |
\%titles,\%children); |
} |
} |
if ($env{'form.autoextract_camtasia'}) { |
if ($env{'form.autoextract_camtasia'}) { |
|
my $version = $env{'form.autoextract_camtasia'}; |
my %displayed; |
my %displayed; |
my $total = 1; |
my $total = 1; |
$env{'form.archive_directory'} = []; |
$env{'form.archive_directory'} = []; |
Line 11333 sub process_decompression {
|
Line 11362 sub process_decompression {
|
$env{'form.archive_'.$i} = 'display'; |
$env{'form.archive_'.$i} = 'display'; |
$env{'form.archive_title_'.$i} = $env{'form.camtasia_foldername'}; |
$env{'form.archive_title_'.$i} = $env{'form.camtasia_foldername'}; |
$displayed{'folder'} = $i; |
$displayed{'folder'} = $i; |
} elsif ($item eq "$contents[0]/index.html") { |
} elsif ((($item eq "$contents[0]/index.html") && ($version == 6)) || |
|
(($item eq "$contents[0]/$contents[0]".'.html') && ($version == 8))) { |
$env{'form.archive_'.$i} = 'display'; |
$env{'form.archive_'.$i} = 'display'; |
$env{'form.archive_title_'.$i} = $env{'form.camtasia_moviename'}; |
$env{'form.archive_title_'.$i} = $env{'form.camtasia_moviename'}; |
$displayed{'web'} = $i; |
$displayed{'web'} = $i; |
} else { |
} else { |
if ($item eq "$contents[0]/media") { |
if ((($item eq "$contents[0]/media") && ($version == 6)) || |
|
((($item eq "$contents[0]/scripts") || ($item eq "$contents[0]/skins") || |
|
($item eq "$contents[0]/skins/express_show")) && ($version == 8))) { |
push(@{$env{'form.archive_directory'}},$i); |
push(@{$env{'form.archive_directory'}},$i); |
} |
} |
$env{'form.archive_'.$i} = 'dependency'; |
$env{'form.archive_'.$i} = 'dependency'; |
Line 13844 sub check_clone {
|
Line 13876 sub check_clone {
|
} |
} |
|
|
sub construct_course { |
sub construct_course { |
my ($args,$logmsg,$courseid,$crsudom,$crsunum,$udom,$uname,$context,$cnum,$category) = @_; |
my ($args,$logmsg,$courseid,$crsudom,$crsunum,$udom,$uname,$context,$cnum,$category,$coderef) = @_; |
my $outcome; |
my $outcome; |
my $linefeed = '<br />'."\n"; |
my $linefeed = '<br />'."\n"; |
if ($context eq 'auto') { |
if ($context eq 'auto') { |
Line 13941 sub construct_course {
|
Line 13973 sub construct_course {
|
'plc.users.denied', |
'plc.users.denied', |
'hidefromcat', |
'hidefromcat', |
'checkforpriv', |
'checkforpriv', |
'categories'], |
'categories', |
|
'internal.uniquecode'], |
$$crsudom,$$crsunum); |
$$crsudom,$$crsunum); |
} |
} |
|
|
Line 14126 sub construct_course {
|
Line 14159 sub construct_course {
|
} |
} |
} |
} |
|
|
|
# |
|
# generate and store uniquecode (available to course requester), if course should have one. |
|
# |
|
if ($args->{'uniquecode'}) { |
|
my ($code,$error) = &make_unique_code($$crsudom,$$crsunum); |
|
if ($code) { |
|
$cenv{'internal.uniquecode'} = $code; |
|
my %crsinfo = |
|
&Apache::lonnet::courseiddump($$crsudom,'.',1,'.','.',$$crsunum,undef,undef,'.'); |
|
if (ref($crsinfo{$$crsudom.'_'.$$crsunum}) eq 'HASH') { |
|
$crsinfo{$$crsudom.'_'.$$crsunum}{'uniquecode'} = $code; |
|
my $putres = &Apache::lonnet::courseidput($$crsudom,\%crsinfo,$crsuhome,'notime'); |
|
} |
|
if (ref($coderef)) { |
|
$$coderef = $code; |
|
} |
|
} |
|
} |
|
|
if ($args->{'disresdis'}) { |
if ($args->{'disresdis'}) { |
$cenv{'pch.roles.denied'}='st'; |
$cenv{'pch.roles.denied'}='st'; |
} |
} |
Line 14194 sub construct_course {
|
Line 14246 sub construct_course {
|
return (1,$outcome); |
return (1,$outcome); |
} |
} |
|
|
|
sub make_unique_code { |
|
my ($cdom,$cnum) = @_; |
|
# get lock on uniquecodes db |
|
my $lockhash = { |
|
$cnum."\0".'uniquecodes' => $env{'user.name'}. |
|
':'.$env{'user.domain'}, |
|
}; |
|
my $tries = 0; |
|
my $gotlock = &Apache::lonnet::newput_dom('uniquecodes',$lockhash,$cdom); |
|
my ($code,$error); |
|
|
|
while (($gotlock ne 'ok') && ($tries<3)) { |
|
$tries ++; |
|
sleep 1; |
|
$gotlock = &Apache::lonnet::newput_dom('uniquecodes',$lockhash,$cdom); |
|
} |
|
if ($gotlock eq 'ok') { |
|
my %currcodes = &Apache::lonnet::dump_dom('uniquecodes',$cdom); |
|
my $gotcode; |
|
my $attempts = 0; |
|
while ((!$gotcode) && ($attempts < 100)) { |
|
$code = &generate_code(); |
|
if (!exists($currcodes{$code})) { |
|
$gotcode = 1; |
|
unless (&Apache::lonnet::newput_dom('uniquecodes',{ $code => $cnum },$cdom) eq 'ok') { |
|
$error = 'nostore'; |
|
} |
|
} |
|
$attempts ++; |
|
} |
|
my @del_lock = ($cnum."\0".'uniquecodes'); |
|
my $dellockoutcome = &Apache::lonnet::del_dom('uniquecodes',\@del_lock,$cdom); |
|
} else { |
|
$error = 'nolock'; |
|
} |
|
return ($code,$error); |
|
} |
|
|
|
sub generate_code { |
|
my $code; |
|
my @letts = qw(B C D G H J K M N P Q R S T V W X Z); |
|
for (my $i=0; $i<6; $i++) { |
|
my $lettnum = int (rand 2); |
|
my $item = ''; |
|
if ($lettnum) { |
|
$item = $letts[int( rand(18) )]; |
|
} else { |
|
$item = 1+int( rand(8) ); |
|
} |
|
$code .= $item; |
|
} |
|
return $code; |
|
} |
|
|
############################################################ |
############################################################ |
############################################################ |
############################################################ |
|
|
Line 14221 sub group_term {
|
Line 14327 sub group_term {
|
} |
} |
|
|
sub course_types { |
sub course_types { |
my @types = ('official','unofficial','community'); |
my @types = ('official','unofficial','community','textbook'); |
my %typename = ( |
my %typename = ( |
official => 'Official course', |
official => 'Official course', |
unofficial => 'Unofficial course', |
unofficial => 'Unofficial course', |
community => 'Community', |
community => 'Community', |
|
textbook => 'Textbook course', |
); |
); |
return (\@types,\%typename); |
return (\@types,\%typename); |
} |
} |
Line 14428 sub init_user_environment {
|
Line 14535 sub init_user_environment {
|
undef,\%userenv,\%domdef,\%is_adv); |
undef,\%userenv,\%domdef,\%is_adv); |
} |
} |
|
|
foreach my $crstype ('official','unofficial','community') { |
foreach my $crstype ('official','unofficial','community','textbook') { |
$userenv{'canrequest.'.$crstype} = |
$userenv{'canrequest.'.$crstype} = |
&Apache::lonnet::usertools_access($username,$domain,$crstype, |
&Apache::lonnet::usertools_access($username,$domain,$crstype, |
'reload','requestcourses', |
'reload','requestcourses', |