version 1.388, 2012/10/29 17:38:56
|
version 1.389, 2012/10/31 12:54:13
|
Line 523 sub innerregister {
|
Line 523 sub innerregister {
|
### |
### |
my $editbutton = ''; |
my $editbutton = ''; |
my $noeditbutton = 1; |
my $noeditbutton = 1; |
my ($cnum,$cdom); |
my ($cnum,$cdom,$cfile,$switchserver,$home,$uploaded); |
if ($env{'request.course.id'}) { |
if ($env{'request.course.id'}) { |
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; |
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; |
Line 555 sub innerregister {
|
Line 555 sub innerregister {
|
my $home = &Apache::lonnet::homeserver($caname,$cadom); |
my $home = &Apache::lonnet::homeserver($caname,$cadom); |
my $allowed=0; |
my $allowed=0; |
my @ids=&Apache::lonnet::current_machine_ids(); |
my @ids=&Apache::lonnet::current_machine_ids(); |
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
if (($home ne 'no_host') && (grep(/^\Q$home\E$/,@ids))) { |
if (!$allowed) { |
|
$editbutton=&switch('','',6,1,$top,,$bottom,$action,$desc); |
$editbutton=&switch('','',6,1,$top,,$bottom,$action,$desc); |
$noeditbutton = 0; |
|
} |
} |
} |
} else { |
# |
# |
# We are an author for some stuff, but currently do not have the role of author. |
# We are an author for some stuff, but currently do not have the role of author. |
# Figure out if we have authoring privileges for the resource we are looking at. |
# Figure out if we have authoring privileges for the resource we are looking at. |
# This should maybe become a privilege check in lonnet |
|
# |
# |
## |
my ($cfile,$switchserver,$home,$uploaded); |
## Determine if user can edit url. |
if ($env{'request.filename'}) { |
## |
my $file=&Apache::lonnet::declutter($env{'request.filename'}); |
my $cfile=''; |
## |
my $cfuname=''; |
## Determine if user can edit url. |
my $cfudom=''; |
## |
my $uploaded; |
($cfile,$home,$switchserver,$uploaded) = |
my $switchserver=''; |
&Apache::lonnet::can_edit_resource($file,$cnum,$cdom); |
my $home; |
} |
if ($env{'request.filename'}) { |
# Turn the button on or off |
my $file=&Apache::lonnet::declutter($env{'request.filename'}); |
if (($cfile) && ($home ne '') && ($home ne 'no_host')) { |
if (defined($cnum) && defined($cdom)) { |
my $nocrsedit; |
$uploaded = &is_course_upload($file,$cnum,$cdom); |
# Suppress display where CC has switched to student role. |
} |
if ($env{'request.course.id'}) { |
if (!$uploaded) { |
unless(&Apache::lonnet::allowed('mdc', |
|
$env{'request.course.id'})) { |
$file=~s{^(priv/$match_domain/$match_username)}{/$1}; |
$nocrsedit = 1; |
$file=~s{^($match_domain/$match_username)}{/priv/$1}; |
|
|
|
# Check that the user has permission to edit this resource |
|
my $setpriv = 1; |
|
($cfuname,$cfudom)=&Apache::lonnet::constructaccess($file,$setpriv); |
|
if (defined($cfudom)) { |
|
$home=&Apache::lonnet::homeserver($cfuname,$cfudom); |
|
my $allowed=0; |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
foreach my $id (@ids) { if ($id eq $home) { $allowed=1; } } |
|
if ($allowed) { |
|
$cfile=$file; |
|
} else { |
|
$switchserver=$file; |
|
} |
} |
} |
} |
} |
if ($nocrsedit) { |
} |
$editbutton=&clear(6,1); |
# Finally, turn the button on or off |
} else { |
if (($cfile || $switchserver) && !$const_space) { |
$editbutton = &get_editbutton($cfile,$home,$switchserver,$uploaded); |
my $nocrsedit; |
|
# Suppress display where CC has switched to student role. |
|
if ($env{'request.course.id'}) { |
|
unless(&Apache::lonnet::allowed('mdc', |
|
$env{'request.course.id'})) { |
|
$nocrsedit = 1; |
|
} |
} |
} |
} elsif ($editbutton eq '') { |
if ($nocrsedit) { |
|
$editbutton=&clear(6,1); |
$editbutton=&clear(6,1); |
} else { |
|
my $bot = "go('$cfile')"; |
|
if ($switchserver) { |
|
if ( $env{'request.symb'} && $env{'request.course.id'} ) { |
|
$cfile = '/adm/switchserver?otherserver='.$home.'&role='. |
|
&HTML::Entities::encode($env{'request.role'},'"<>&').'&symb='. |
|
&HTML::Entities::encode($env{'request.symb'},'"<>&'); |
|
$bot = "need_switchserver('$cfile');"; |
|
} |
|
} |
|
$editbutton=&switch |
|
('','',6,1,'pcstr.png','Edit','resource[_2]', |
|
$bot,"Edit this resource"); |
|
$noeditbutton = 0; |
|
} |
} |
} elsif ($editbutton eq '') { |
|
$editbutton=&clear(6,1); |
|
} |
} |
} |
} elsif (($env{'request.filename'}) && $env{'request.course.id'}) { |
if (($noeditbutton) && ($env{'request.filename'})) { |
|
if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) { |
if (&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) { |
my $file=&Apache::lonnet::declutter($env{'request.filename'}); |
my $file=&Apache::lonnet::declutter($env{'request.filename'}); |
if (defined($cnum) && defined($cdom)) { |
if (($cnum =~ /$match_courseid/) && ($cdom =~ /$match_domain/)) { |
if (&is_course_upload($file,$cnum,$cdom)) { |
my ($cfile,$home,$switchserver,$uploaded) = |
my $cfile = &edit_course_upload($file,$cnum,$cdom); |
&Apache::lonnet::can_edit_resource($file,$cnum,$cdom); |
if ($cfile) { |
if (($uploaded) && ($cfile ne '')) { |
$editbutton=&switch |
$editbutton = &get_editbutton($cfile,$home,$switchserver,$uploaded); |
('','',6,1,'pcstr.png','Edit', |
|
'resource[_2]',"go('".$cfile."');", |
|
'Edit this resource'); |
|
} |
|
} |
} |
} |
} |
} |
} |
Line 829 ENDMENUITEMS
|
Line 784 ENDMENUITEMS
|
. &Apache::lonhtmlcommon::scripttag('', 'end'); |
. &Apache::lonhtmlcommon::scripttag('', 'end'); |
} |
} |
|
|
sub is_course_upload { |
sub get_editbutton { |
my ($file,$cnum,$cdom) = @_; |
my ($cfile,$home,$switchserver,$uploaded) = @_; |
my $uploadpath = &LONCAPA::propath($cdom,$cnum); |
my $jscall = &Apache::lonhtmlcommon::jump_to_editres($cfile,$home,$switchserver, |
$uploadpath =~ s{^\/}{}; |
$uploaded,$env{'request.symb'}); |
if (($file =~ m{^\Q$uploadpath\E/userfiles/docs/}) || |
if ($jscall) { |
($file =~ m{^userfiles/\Q$cdom\E/\Q$cnum\E/docs/})) { |
return &switch('','',6,1,'pcstr.png','Edit','resource[_2]', |
return 1; |
$jscall,"Edit this resource"); |
} |
} |
return; |
|
} |
|
|
|
sub edit_course_upload { |
|
my ($file,$cnum,$cdom) = @_; |
|
my $cfile; |
|
if ($file =~/\.(htm|html|css|js|txt)$/) { |
|
my $ext = $1; |
|
my $url = &Apache::lonnet::hreflocation('',$file); |
|
my $home = &Apache::lonnet::homeserver($cnum,$cdom); |
|
my @ids=&Apache::lonnet::current_machine_ids(); |
|
my $dest; |
|
if ($home && grep(/^\Q$home\E$/,@ids)) { |
|
$dest = $url.'?forceedit=1'; |
|
} else { |
|
unless (&Apache::lonnet::get_locks()) { |
|
$dest = '/adm/switchserver?otherserver='. |
|
$home.'&role='.$env{'request.role'}. |
|
'&url='.$url.'&forceedit=1'; |
|
} |
|
} |
|
if ($dest) { |
|
$cfile = &HTML::Entities::encode($dest,'"<>&'); |
|
} |
|
} |
|
return $cfile; |
|
} |
} |
|
|
# ================================================================== Raw Config |
# ================================================================== Raw Config |
Line 1264 sub utilityfunctions {
|
Line 1193 sub utilityfunctions {
|
my $end_page_annotate = |
my $end_page_annotate = |
&Apache::loncommon::end_page({'js_ready' => 1}); |
&Apache::loncommon::end_page({'js_ready' => 1}); |
|
|
my $confirm_switch = &mt("Editing requires switching to the resource's home server.").'\n'. |
my $jumptores = &Apache::lonhtmlcommon::javascript_jumpto_resource(); |
&mt('Switch server?'); |
|
|
|
my $esc_url=&escape($currenturl); |
my $esc_url=&escape($currenturl); |
my $esc_symb=&escape($currentsymb); |
my $esc_symb=&escape($currentsymb); |
Line 1280 return (<<ENDUTILITY)
|
Line 1208 return (<<ENDUTILITY)
|
|
|
$dc_popup_cid |
$dc_popup_cid |
|
|
function go(url) { |
$jumptores |
if (url!='' && url!= null) { |
|
currentURL = null; |
|
currentSymb= null; |
|
window.location.href=url; |
|
} |
|
} |
|
|
|
function need_switchserver(url) { |
|
if (url!='' && url!= null) { |
|
if (confirm("$confirm_switch")) { |
|
go(url); |
|
} |
|
} |
|
return; |
|
} |
|
|
|
function gopost(url,postdata) { |
function gopost(url,postdata) { |
if (url!='') { |
if (url!='') { |