[LON-CAPA-cvs] cvs: loncom(version_2_9_X) /interface lonmenu.pm

raeburn raeburn@source.lon-capa.org
Fri, 20 Aug 2010 17:59:04 -0000


raeburn		Fri Aug 20 17:59:04 2010 EDT

  Modified files:              (Branch: version_2_9_X)
    /loncom/interface	lonmenu.pm 
  Log:
  - Backport 1.330, 1.331, 1.336.
  
  
Index: loncom/interface/lonmenu.pm
diff -u loncom/interface/lonmenu.pm:1.244.2.17 loncom/interface/lonmenu.pm:1.244.2.18
--- loncom/interface/lonmenu.pm:1.244.2.17	Mon May 24 12:20:16 2010
+++ loncom/interface/lonmenu.pm	Fri Aug 20 17:59:04 2010
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines to control the menu
 #
-# $Id: lonmenu.pm,v 1.244.2.17 2010/05/24 12:20:16 raeburn Exp $
+# $Id: lonmenu.pm,v 1.244.2.18 2010/08/20 17:59:04 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -557,23 +557,27 @@
             my $cfuname='';
             my $cfudom='';
             my $uploaded;
+            my $switchserver='';
+            my $home;
             if ($env{'request.filename'}) {
                 my $file=&Apache::lonnet::declutter($env{'request.filename'});
                 $file=~s/^($match_domain)\/($match_username)/\/priv\/$2/;
                 # Check that the user has permission to edit this resource
                 ($cfuname,$cfudom)=&Apache::loncacc::constructaccess($file,$1);
                 if (defined($cfudom)) {
-		    my $home=&Apache::lonnet::homeserver($cfuname,$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;
                     }
                 }
             }        
             # Finally, turn the button on or off
-            if ($cfile && !$const_space) {
+            if (($cfile || $switchserver) && !$const_space) {
                 my $nocrsedit;
                 # Suppress display where CC has switched to student role.
                 if ($env{'request.course.id'}) {
@@ -585,9 +589,18 @@
                 if ($nocrsedit) {
                     $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'},'"<>&').'&amp;symb='.
+                                     &HTML::Entities::encode($env{'request.symb'},'"<>&');
+                        }
+                        $bot = "need_switchserver('$cfile');";
+                    }
                     $editbutton=&switch
-                       ('','',6,1,'pcstr.gif','edit[_1]','resource[_2]',
-                     "go('".$cfile."');","Edit this resource");
+                       ('','',6,1,'pcstr.png','edit[_1]','resource[_2]',
+                       $bot,"Edit this resource");
                     $noeditbutton = 0;
                 }
             } elsif ($editbutton eq '') {
@@ -1513,6 +1526,9 @@
     my $end_page_bookmark = 
         &Apache::loncommon::end_page({'js_ready' => 1});
 
+    my $confirm_switch = &mt("Editing requires switching to the reource's home server.").'\n'.
+                         &mt('Switch server?');
+
 return (<<ENDUTILITY)
 
     var currentURL="$currenturl";
@@ -1529,6 +1545,15 @@
    }
 }
 
+function need_switchserver(url) {
+    if (url!='' && url!= null) {
+        if (confirm("$confirm_switch")) {
+            go(url);
+        }
+    }
+    return;
+}
+
 function gopost(url,postdata) {
    if (url!='') {
       this.document.server.action=url;