version 1.564, 2007/08/15 18:03:22
|
version 1.566, 2007/08/23 21:54:40
|
Line 1084 sub changable_area {
|
Line 1084 sub changable_area {
|
|
|
=pod |
=pod |
|
|
|
=item * resize_textarea_js |
|
|
|
emits the needed javascript to resize a textarea to be as big as possible |
|
|
|
creates a function resize_textrea that takes two IDs first should be |
|
the id of the element to resize, second should be the id of a div that |
|
surrounds everything that comes after the textarea, this routine needs |
|
to be attached to the <body> for the onload and onresize events. |
|
|
|
|
|
=cut |
|
|
|
sub resize_textarea_js { |
|
return <<"RESIZE"; |
|
<script type="text/javascript"> |
|
function myHandleEvent (event) { |
|
alert(event.type); |
|
} |
|
|
|
var Geometry = {}; |
|
function init_geometry() { |
|
if (Geometry.init) { return }; |
|
Geometry.init=1; |
|
if (window.innerHeight) { |
|
Geometry.getViewportHeight = function() { return window.innerHeight; }; |
|
} |
|
else if (document.documentElement && document.documentElement.clientHeight) { |
|
Geometry.getViewportHeight = |
|
function() { return document.documentElement.clientHeight; }; |
|
} |
|
else if (document.body.clientHeight) { |
|
Geometry.getViewportHeight = |
|
function() { return document.body.clientHeight; }; |
|
} |
|
} |
|
|
|
function resize_textarea(textarea_id,bottom_id) { |
|
init_geometry(); |
|
var textarea = document.getElementById(textarea_id); |
|
//alert(textarea); |
|
|
|
var textarea_top = textarea.offsetTop; |
|
var textarea_height = textarea.offsetHeight; |
|
var bottom = document.getElementById(bottom_id); |
|
var bottom_top = bottom.offsetTop; |
|
var bottom_height = bottom.offsetHeight; |
|
var window_height = Geometry.getViewportHeight(); |
|
var fudge = 23; |
|
var new_height = window_height-fudge-textarea_top-bottom_height; |
|
if (new_height < 300) { |
|
new_height = 300; |
|
} |
|
textarea.style.height=new_height+'px'; |
|
} |
|
</script> |
|
RESIZE |
|
|
|
} |
|
|
|
=pod |
|
|
=back |
=back |
|
|
=head1 Excel and CSV file utility routines |
=head1 Excel and CSV file utility routines |
Line 6912 sub commit_studentrole {
|
Line 6973 sub commit_studentrole {
|
############################################################ |
############################################################ |
############################################################ |
############################################################ |
|
|
|
sub check_clone { |
|
my ($args) = @_; |
|
my $cloneid='/'.$args->{'clonedomain'}.'/'.$args->{'clonecourse'}; |
|
my ($clonecrsudom,$clonecrsunum)= &LONCAPA::split_courseid($cloneid); |
|
my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom); |
|
my $clonemsg; |
|
my $can_clone = 0; |
|
|
|
if ($clonehome eq 'no_host') { |
|
$clonemsg = &mt('Attempting to clone non-existing [_1]', |
|
$args->{'crstype'}); |
|
} else { |
|
my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1}); |
|
if ($env{'request.role.domain'} eq $args->{'form.clonedomain'}) { |
|
$can_clone = 1; |
|
} else { |
|
my %clonehash = &Apache::lonnet::get('environment',['cloners'], |
|
$args->{'clonedomain'},$args->{'clonecourse'}); |
|
my @cloners = split(/,/,$clonehash{'cloners'}); |
|
my %roleshash = |
|
&Apache::lonnet::get_my_roles($args->{'ccuname'}, |
|
$args->{'ccdomain'},'userroles',['active'],['cc'], |
|
[$args->{'clonedomain'}]); |
|
if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':cc'}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) { |
|
$can_clone = 1; |
|
} else { |
|
$clonemsg = &mt('The new course was not cloned from an existing course because the new course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); |
|
} |
|
} |
|
} |
|
|
|
return ($can_clone, $clonemsg, $cloneid, $clonehome); |
|
} |
|
|
sub construct_course { |
sub construct_course { |
my ($args,$logmsg,$courseid,$crsudom,$crsunum,$udom,$uname,$context) = @_; |
my ($args,$logmsg,$courseid,$crsudom,$crsunum,$udom,$uname,$context) = @_; |
my $outcome; |
my $outcome; |
Line 6919 sub construct_course {
|
Line 7014 sub construct_course {
|
if ($context eq 'auto') { |
if ($context eq 'auto') { |
$linefeed = "\n"; |
$linefeed = "\n"; |
} |
} |
|
|
|
# |
|
# Are we cloning? |
|
# |
|
my ($can_clone, $clonemsg, $cloneid, $clonehome); |
|
if (($args->{'clonecourse'}) && ($args->{'clonedomain'})) { |
|
($can_clone, $clonemsg, $cloneid, $clonehome) = &check_clone($args); |
|
if ($context ne 'auto') { |
|
$clonemsg = '<span class="LC_error">'.$clonemsg.'</span>'; |
|
} |
|
$outcome .= $clonemsg.$linefeed; |
|
|
|
if (!$can_clone) { |
|
return (0,$outcome); |
|
} |
|
} |
|
|
# |
# |
# Open course |
# Open course |
# |
# |
Line 6939 sub construct_course {
|
Line 7051 sub construct_course {
|
# if anyone ever decides to not show this, and Utils::Course::new |
# if anyone ever decides to not show this, and Utils::Course::new |
# will need to be suitably modified. |
# will need to be suitably modified. |
$outcome .= &mt('New LON-CAPA [_1] ID: [_2]',$crstype,$$courseid).$linefeed; |
$outcome .= &mt('New LON-CAPA [_1] ID: [_2]',$crstype,$$courseid).$linefeed; |
|
|
# |
# |
# Check if created correctly |
# Check if created correctly |
# |
# |
($$crsudom,$$crsunum)= &LONCAPA::split_courseid($$courseid); |
($$crsudom,$$crsunum)= &LONCAPA::split_courseid($$courseid); |
my $crsuhome=&Apache::lonnet::homeserver($$crsunum,$$crsudom); |
my $crsuhome=&Apache::lonnet::homeserver($$crsunum,$$crsudom); |
$outcome .= &mt('Created on').': '.$crsuhome.$linefeed; |
$outcome .= &mt('Created on').': '.$crsuhome.$linefeed; |
|
|
# |
# |
# Are we cloning? |
# Do the cloning |
# |
# |
my $cloneid=''; |
if ($can_clone && $cloneid) { |
if (($args->{'clonecourse'}) && ($args->{'clonedomain'})) { |
$clonemsg = &mt('Cloning [_1] from [_2]',$crstype,$clonehome); |
my $can_clone = 0; |
if ($context ne 'auto') { |
$cloneid='/'.$args->{'clonedomain'}.'/'.$args->{'clonecourse'}; |
$clonemsg = '<span class="LC_success">'.$clonemsg.'</span>'; |
my ($clonecrsudom,$clonecrsunum)= &LONCAPA::split_courseid($cloneid); |
} |
my $clonehome=&Apache::lonnet::homeserver($clonecrsunum,$clonecrsudom); |
$outcome .= $clonemsg.$linefeed; |
my $clonemsg; |
my %oldcenv=&Apache::lonnet::dump('environment',$$crsudom,$$crsunum); |
if ($clonehome eq 'no_host') { |
|
$clonemsg = &mt('Attempting to clone non-existing [_1]',$crstype); |
|
if ($context eq 'auto') { |
|
$outcome .= $clonemsg; |
|
} else { |
|
$outcome .= '<font color="red">'.$clonemsg.'</font>'; |
|
} |
|
$outcome .= $linefeed; |
|
} else { |
|
my %clonedesc = &Apache::lonnet::coursedescription($cloneid,{'one_time' => 1}); |
|
if ($env{'request.role.domain'} eq $args->{'form.clonedomain'}) { |
|
$can_clone = 1; |
|
} else { |
|
my %clonehash = &Apache::lonnet::get('environment',['cloners'], |
|
$args->{'clonedomain'},$args->{'clonecourse'}); |
|
my @cloners = split(/,/,$clonehash{'cloners'}); |
|
my %roleshash = |
|
&Apache::lonnet::get_my_roles($args->{'ccuname'}, |
|
$args->{'ccdomain'},'userroles',['active'],['cc'], |
|
[$args->{'clonedomain'}]); |
|
if (($roleshash{$args->{'clonecourse'}.':'.$args->{'clonedomain'}.':cc'}) || (grep(/^\Q$args->{'ccuname'}\E:\Q$args->{'ccdomain'}\E$/,@cloners))) { |
|
$can_clone = 1; |
|
} else { |
|
$clonemsg = &mt('The new course was not cloned from an existing course because the course owner ([_1]) does not have cloning rights in the existing course ([_2]).',$args->{'ccuname'}.':'.$args->{'ccdomain'},$clonedesc{'description'}); |
|
if ($context eq 'auto') { |
|
$outcome .= $clonemsg; |
|
} else { |
|
$outcome .= '<font color="red">'.$clonemsg.'</font>'; |
|
} |
|
$outcome .= $linefeed; |
|
} |
|
} |
|
} |
|
if ($can_clone) { |
|
$clonemsg = &mt('Cloning [_1] from [_2]',$crstype,$clonehome); |
|
if ($context eq 'auto') { |
|
$outcome = $clonemsg; |
|
} else { |
|
$outcome .= '<font color="green">'.$clonemsg.'</font>'; |
|
} |
|
$outcome .= $linefeed; |
|
my %oldcenv=&Apache::lonnet::dump('environment',$$crsudom,$$crsunum); |
|
# Copy all files |
# Copy all files |
&Apache::lonclonecourse::copycoursefiles($cloneid,$$courseid); |
&Apache::lonclonecourse::copycoursefiles($cloneid,$$courseid); |
# Restore URL |
# Restore URL |
$cenv{'url'}=$oldcenv{'url'}; |
$cenv{'url'}=$oldcenv{'url'}; |
# Restore title |
# Restore title |
$cenv{'description'}=$oldcenv{'description'}; |
$cenv{'description'}=$oldcenv{'description'}; |
# restore grading mode |
# restore grading mode |
if (defined($oldcenv{'grading'})) { |
if (defined($oldcenv{'grading'})) { |
$cenv{'grading'}=$oldcenv{'grading'}; |
$cenv{'grading'}=$oldcenv{'grading'}; |
} |
|
# Mark as cloned |
|
$cenv{'clonedfrom'}=$cloneid; |
|
delete($cenv{'default_enrollment_start_date'}); |
|
delete($cenv{'default_enrollment_end_date'}); |
|
} |
} |
|
# Mark as cloned |
|
$cenv{'clonedfrom'}=$cloneid; |
|
delete($cenv{'default_enrollment_start_date'}); |
|
delete($cenv{'default_enrollment_end_date'}); |
} |
} |
|
|
# |
# |
# Set environment (will override cloned, if existing) |
# Set environment (will override cloned, if existing) |
# |
# |
Line 7121 sub construct_course {
|
Line 7191 sub construct_course {
|
' ('.$lt{'adby'}.')'; |
' ('.$lt{'adby'}.')'; |
if ($context eq 'auto') { |
if ($context eq 'auto') { |
$outcome .= $badclass_msg.$linefeed; |
$outcome .= $badclass_msg.$linefeed; |
$outcome .= '<font color="red">'.$badclass_msg.$linefeed.'<ul>'."\n"; |
$outcome .= '<div class="LC_warning">'.$badclass_msg.$linefeed.'<ul>'."\n"; |
foreach my $item (@badclasses) { |
foreach my $item (@badclasses) { |
if ($context eq 'auto') { |
if ($context eq 'auto') { |
$outcome .= " - $item\n"; |
$outcome .= " - $item\n"; |
Line 7132 sub construct_course {
|
Line 7202 sub construct_course {
|
if ($context eq 'auto') { |
if ($context eq 'auto') { |
$outcome .= $linefeed; |
$outcome .= $linefeed; |
} else { |
} else { |
$outcome .= "</ul><br /><br /></font>\n"; |
$outcome .= "</ul><br /><br /></div>\n"; |
} |
} |
} |
} |
} |
} |
Line 7154 sub construct_course {
|
Line 7224 sub construct_course {
|
if ($context eq 'auto') { |
if ($context eq 'auto') { |
$outcome .= $krb_msg; |
$outcome .= $krb_msg; |
} else { |
} else { |
$outcome .= '<font color="red" size="+1">'.$krb_msg.'</font>'; |
$outcome .= '<span class="LC_error">'.$krb_msg.'</span>'; |
} |
} |
$outcome .= $linefeed; |
$outcome .= $linefeed; |
} |
} |
Line 7252 sub construct_course {
|
Line 7322 sub construct_course {
|
if ($errtext) { $fatal=2; } |
if ($errtext) { $fatal=2; } |
$outcome .= ($fatal?$errtext:'write ok').$linefeed; |
$outcome .= ($fatal?$errtext:'write ok').$linefeed; |
} |
} |
return $outcome; |
|
|
return (1,$outcome); |
} |
} |
|
|
############################################################ |
############################################################ |