version 1.1247, 2016/06/20 15:35:42
|
version 1.1248, 2016/07/01 19:59:35
|
Line 1775 RESIZE
|
Line 1775 RESIZE
|
} |
} |
|
|
sub colorfuleditor_js { |
sub colorfuleditor_js { |
|
my $browse_or_search; |
|
my $respath; |
|
my ($cnum,$cdom) = &crsauthor_url(); |
|
if ($cnum) { |
|
$respath = "/res/$cdom/$cnum/"; |
|
my %js_lt = &Apache::lonlocal::texthash( |
|
sunm => 'Sub-directory name', |
|
save => 'Save page to make this permanent', |
|
); |
|
&js_escape(\%js_lt); |
|
$browse_or_search = <<"END"; |
|
|
|
function toggleChooser(form,element,titleid,only,search) { |
|
var disp = 'none'; |
|
if (document.getElementById('chooser_'+element)) { |
|
var curr = document.getElementById('chooser_'+element).style.display; |
|
if (curr == 'none') { |
|
disp='inline'; |
|
if (form.elements['chooser_'+element].length) { |
|
for (var i=0; i<form.elements['chooser_'+element].length; i++) { |
|
form.elements['chooser_'+element][i].checked = false; |
|
} |
|
} |
|
toggleResImport(form,element); |
|
} |
|
document.getElementById('chooser_'+element).style.display = disp; |
|
} |
|
} |
|
|
|
function toggleCrsFile(form,element,numdirs) { |
|
if (document.getElementById('chooser_'+element+'_crsres')) { |
|
var curr = document.getElementById('chooser_'+element+'_crsres').style.display; |
|
if (curr == 'none') { |
|
if (numdirs) { |
|
form.elements['coursepath_'+element].selectedIndex = 0; |
|
if (numdirs > 1) { |
|
window['select1'+element+'_changed'](); |
|
} |
|
} |
|
} |
|
document.getElementById('chooser_'+element+'_crsres').style.display = 'block'; |
|
|
|
} |
|
if (document.getElementById('chooser_'+element+'_upload')) { |
|
document.getElementById('chooser_'+element+'_upload').style.display = 'none'; |
|
if (document.getElementById('uploadcrsres_'+element)) { |
|
document.getElementById('uploadcrsres_'+element).value = ''; |
|
} |
|
} |
|
return; |
|
} |
|
|
|
function toggleCrsUpload(form,element,numcrsdirs) { |
|
if (document.getElementById('chooser_'+element+'_crsres')) { |
|
document.getElementById('chooser_'+element+'_crsres').style.display = 'none'; |
|
} |
|
if (document.getElementById('chooser_'+element+'_upload')) { |
|
var curr = document.getElementById('chooser_'+element+'_upload').style.display; |
|
if (curr == 'none') { |
|
if (numcrsdirs) { |
|
form.elements['crsauthorpath_'+element].selectedIndex = 0; |
|
form.elements['newsubdir_'+element][0].checked = true; |
|
toggleNewsubdir(form,element); |
|
} |
|
} |
|
document.getElementById('chooser_'+element+'_upload').style.display = 'block'; |
|
} |
|
return; |
|
} |
|
|
|
function toggleResImport(form,element) { |
|
var choices = new Array('crsres','upload'); |
|
for (var i=0; i<choices.length; i++) { |
|
if (document.getElementById('chooser_'+element+'_'+choices[i])) { |
|
document.getElementById('chooser_'+element+'_'+choices[i]).style.display = 'none'; |
|
} |
|
} |
|
} |
|
|
|
function toggleNewsubdir(form,element) { |
|
var newsub = form.elements['newsubdir_'+element]; |
|
if (newsub) { |
|
if (newsub.length) { |
|
for (var j=0; j<newsub.length; j++) { |
|
if (newsub[j].checked) { |
|
if (document.getElementById('newsubdirname_'+element)) { |
|
if (newsub[j].value == '1') { |
|
document.getElementById('newsubdirname_'+element).type = "text"; |
|
if (document.getElementById('newsubdir_'+element)) { |
|
document.getElementById('newsubdir_'+element).innerHTML = '<br />$js_lt{sunm}'; |
|
} |
|
} else { |
|
document.getElementById('newsubdirname_'+element).type = "hidden"; |
|
document.getElementById('newsubdirname_'+element).value = ""; |
|
document.getElementById('newsubdir_'+element).innerHTML = ""; |
|
} |
|
} |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
function updateCrsFile(form,element) { |
|
var directory = form.elements['coursepath_'+element]; |
|
var filename = form.elements['coursefile_'+element]; |
|
var path = directory.options[directory.selectedIndex].value; |
|
var file = filename.options[filename.selectedIndex].value; |
|
form.elements[element].value = '$respath'; |
|
if (path == '/') { |
|
form.elements[element].value += file; |
|
} else { |
|
form.elements[element].value += path+'/'+file; |
|
} |
|
unClean(); |
|
if (document.getElementById('previewimg_'+element)) { |
|
document.getElementById('previewimg_'+element).src = form.elements[element].value; |
|
var newsrc = document.getElementById('previewimg_'+element).src; |
|
} |
|
if (document.getElementById('showimg_'+element)) { |
|
document.getElementById('showimg_'+element).innerHTML = '($js_lt{save})'; |
|
} |
|
toggleChooser(form,element); |
|
return; |
|
} |
|
|
|
function uploadDone(suffix,name) { |
|
if (name) { |
|
document.forms["lonhomework"].elements[suffix].value = name; |
|
unClean(); |
|
toggleChooser(document.forms["lonhomework"],suffix); |
|
} |
|
} |
|
|
|
\$(document).ready(function(){ |
|
|
|
\$(document).delegate('form :submit', 'click', function( event ) { |
|
if ( \$( this ).hasClass( "LC_uploadcrsres" ) ) { |
|
var buttonId = this.id; |
|
var suffix = buttonId.toString(); |
|
suffix = suffix.replace(/^crsupload_/,''); |
|
event.preventDefault(); |
|
document.lonhomework.target = 'crsupload_target_'+suffix; |
|
document.lonhomework.action = '/adm/coursepub?LC_uploadcrsres='+suffix; |
|
\$(this.form).submit(); |
|
document.lonhomework.target = ''; |
|
if (document.getElementById('crsuploadto_'+suffix)) { |
|
document.lonhomework.action = document.getElementById('crsuploadto_'+suffix).value; |
|
} |
|
return false; |
|
} |
|
}); |
|
}); |
|
END |
|
} |
return <<"COLORFULEDIT" |
return <<"COLORFULEDIT" |
<script type="text/javascript"> |
<script type="text/javascript"> |
// <![CDATA[> |
// <![CDATA[> |
Line 1957 sub colorfuleditor_js {
|
Line 2113 sub colorfuleditor_js {
|
} |
} |
} |
} |
|
|
|
$browse_or_search |
|
|
// ]]> |
// ]]> |
</script> |
</script> |
Line 2009 sub insert_folding_button {
|
Line 2165 sub insert_folding_button {
|
value=\"".&mt('Hide')."\" onclick=\"fold_box('$curDepth','$lastresource')\">"; |
value=\"".&mt('Hide')."\" onclick=\"fold_box('$curDepth','$lastresource')\">"; |
} |
} |
|
|
|
sub crsauthor_url { |
|
my ($url) = @_; |
|
if ($url eq '') { |
|
$url = $ENV{'REQUEST_URI'}; |
|
} |
|
my ($cnum,$cdom); |
|
if ($env{'request.course.id'}) { |
|
my ($audom,$auname) = ($url =~ m{^/priv/($match_domain)/($match_name)/}); |
|
if ($audom ne '' && $auname ne '') { |
|
if (($env{'course.'.$env{'request.course.id'}.'.num'} eq $auname) && |
|
($env{'course.'.$env{'request.course.id'}.'.domain'} eq $audom)) { |
|
$cnum = $auname; |
|
$cdom = $audom; |
|
} |
|
} |
|
} |
|
return ($cnum,$cdom); |
|
} |
|
|
|
sub import_crsauthor_form { |
|
my ($form,$firstselectname,$secondselectname,$onchangefirst,$only,$suffix) = @_; |
|
return (0) unless ($env{'request.course.id'}); |
|
my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $crshome = $env{'course.'.$env{'request.course.id'}.'.home'}; |
|
return (0) unless (($cnum ne '') && ($cdom ne '')); |
|
my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'}; |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
my ($output,$is_home,$relpath,%subdirs,%files,%selimport_menus); |
|
|
|
if (grep(/^\Q$crshome\E$/,@ids)) { |
|
$is_home = 1; |
|
} |
|
$relpath = "/priv/$cdom/$cnum"; |
|
&Apache::lonnet::recursedirs($is_home,'priv',$londocroot,$relpath,'',\%subdirs,\%files); |
|
my %lt = &Apache::lonlocal::texthash ( |
|
fnam => 'Filename', |
|
dire => 'Directory', |
|
); |
|
my $numdirs = scalar(keys(%files)); |
|
my (%possexts,$singledir,@singledirfiles); |
|
if ($only) { |
|
map { $possexts{$_} = 1; } split(/\s*,\s*/,$only); |
|
} |
|
my (%nonemptydirs,$possdirs); |
|
if ($numdirs > 1) { |
|
my @order; |
|
foreach my $key (sort { lc($a) cmp lc($b) } (keys(%files))) { |
|
if (ref($files{$key}) eq 'HASH') { |
|
my $shown = $key; |
|
if ($key eq '') { |
|
$shown = '/'; |
|
} |
|
my @ordered = (); |
|
foreach my $file (sort { lc($a) cmp lc($b) } (keys(%{$files{$key}}))) { |
|
if ($only) { |
|
my ($ext) = ($file =~ /\.([^.]+)$/); |
|
unless ($possexts{lc($ext)}) { |
|
next; |
|
} |
|
} |
|
$selimport_menus{$key}->{'select2'}->{$file} = $file; |
|
push(@ordered,$file); |
|
} |
|
if (@ordered) { |
|
push(@order,$key); |
|
$nonemptydirs{$key} = 1; |
|
$selimport_menus{$key}->{'text'} = $shown; |
|
$selimport_menus{$key}->{'default'} = ''; |
|
$selimport_menus{$key}->{'select2'}->{''} = ''; |
|
$selimport_menus{$key}->{'order'} = \@ordered; |
|
} |
|
} |
|
} |
|
$possdirs = scalar(keys(%nonemptydirs)); |
|
if ($possdirs > 1) { |
|
my @order = sort { lc($a) cmp lc($b) } (keys(%nonemptydirs)); |
|
$output = $lt{'dire'}. |
|
&linked_select_forms($form,'<br />'. |
|
$lt{'fnam'},'', |
|
$firstselectname,$secondselectname, |
|
\%selimport_menus,\@order, |
|
$onchangefirst,'',$suffix).'<br />'; |
|
} elsif ($possdirs == 1) { |
|
$singledir = (keys(%nonemptydirs))[0]; |
|
if (ref($selimport_menus{$singledir}->{'order'}) eq 'ARRAY') { |
|
@singledirfiles = @{$selimport_menus{$singledir}->{'order'}}; |
|
} |
|
delete($selimport_menus{$singledir}); |
|
} |
|
} elsif ($numdirs == 1) { |
|
$singledir = (keys(%files))[0]; |
|
foreach my $file (sort { lc($a) cmp lc($b) } (keys(%{$files{$singledir}}))) { |
|
if ($only) { |
|
my ($ext) = ($file =~ /\.([^.]+)$/); |
|
unless ($possexts{lc($ext)}) { |
|
next; |
|
} |
|
} |
|
push(@singledirfiles,$file); |
|
} |
|
if (@singledirfiles) { |
|
$possdirs == 1; |
|
} |
|
} |
|
if (($possdirs == 1) && (@singledirfiles)) { |
|
my $showdir = $singledir; |
|
if ($singledir eq '') { |
|
$showdir = '/'; |
|
} |
|
$output = $lt{'dire'}. |
|
'<select name="'.$firstselectname.'">'. |
|
'<option value="'.$singledir.'">'.$showdir.'</option>'."\n". |
|
'</select><br />'. |
|
$lt{'fnam'}.'<select name="'.$secondselectname.'">'."\n". |
|
'<option value="" selected="selected">'.$lt{'se'}.'</option>'."\n"; |
|
foreach my $file (@singledirfiles) { |
|
$output .= '<option value="'.$file.'">'.$file.'</option>'."\n"; |
|
} |
|
$output .= '</select><br />'."\n"; |
|
} |
|
return ($possdirs,$output); |
|
} |
|
|
=pod |
=pod |
|
|
=head1 Excel and CSV file utility routines |
=head1 Excel and CSV file utility routines |
Line 3874 category
|
Line 4154 category
|
|
|
sub filecategorytypes { |
sub filecategorytypes { |
my ($cat) = @_; |
my ($cat) = @_; |
return @{$category_extensions{lc($cat)}}; |
if (ref($category_extensions{lc($cat)}) eq 'ARRAY') { |
|
return @{$category_extensions{lc($cat)}}; |
|
} else { |
|
return (); |
|
} |
} |
} |
|
|
=pod |
=pod |