[LON-CAPA-cvs] cvs: loncom /interface portfolio.pm

banghart lon-capa-cvs@mail.lon-capa.org
Mon, 11 Oct 2004 22:52:21 -0000


This is a MIME encoded message

--banghart1097535141
Content-Type: text/plain

banghart		Mon Oct 11 18:52:21 2004 EDT

  Modified files:              
    /loncom/interface	portfolio.pm 
  Log:
  	Nowhere near ready, but saving work in progress.
  
  
--banghart1097535141
Content-Type: text/plain
Content-Disposition: attachment; filename="banghart-20041011185221.txt"

Index: loncom/interface/portfolio.pm
diff -u loncom/interface/portfolio.pm:1.46 loncom/interface/portfolio.pm:1.47
--- loncom/interface/portfolio.pm:1.46	Fri Sep 10 17:33:48 2004
+++ loncom/interface/portfolio.pm	Mon Oct 11 18:52:20 2004
@@ -37,7 +37,6 @@
     my $anchor = '<a href="/adm/portfolio?selectfile='.$filename.'&currentpath='.$current_path.'">'.$filename.'</a>';
     return $anchor;
 }
-
 my $dirptr=16384;
 sub display_directory {
     my ($r,$current_path,$is_empty,$dir_list)=@_;
@@ -133,6 +132,96 @@
 #   $r->print(&display_actions($current_path, $currentFile, $isEmpty));
     $r->print('</table></form>');
 }
+sub display_file_select {
+    my ($r,$current_path,$is_empty,$dir_list)=@_;
+    my $iconpath= $r->dir_config('lonIconsURL') . "/";
+    $r->print('<table border="0" cellspacing="2" cellpadding="2"><tr valign="middle">');
+    $r->print('<td bgcolor="#ccddaa" align="center">');
+    my $displayOut = '<form method="post" enctype="multipart/form-data">';
+    $displayOut = $displayOut.'<input name="uploaddoc" type="file" />'.
+        '<input type="hidden" name="currentpath" value="'.$current_path.'" />'.
+        '<input type="submit" name="storeupl" value="Upload" />'.
+        '</form>';
+    $r->print($displayOut);
+    $r->print('</td></tr><tr><td bgcolor="#ccddaa" align="center">');
+    $displayOut = '<form method="post">';
+    $displayOut .= '<input name="newdir" type="input" />'.
+        '<input type="hidden" name="currentpath" value="'.$current_path.'" />'.
+        '<input type="submit" name="createdir" value="'.&mt("Create Directory").'" />'.
+        '</form>';
+    $r->print($displayOut);
+    $r->print('</td></tr></table>');
+    my @tree = split (/\//,$current_path);
+    $r->print('<font size="+2">'.&make_anchor('portfolio','/').'/');
+    if (@tree > 1){
+        my $newCurrentPath = '';
+        for (my $i = 1; $i< @tree; $i++){
+            $newCurrentPath .= $tree[$i].'/';
+            $r->print(&make_anchor($tree[$i],'/'.$newCurrentPath).'/');
+        }
+    }
+    $r->print('</font>');
+    &Apache::lonhtmlcommon::store_recent('portfolio',$current_path,$current_path);
+    #Fixme -- remove from recent those paths that are deleted
+    $r->print('<br /><form method=post action="/adm/portfolio">'.
+	      &Apache::lonhtmlcommon::select_recent('portfolio','currentpath',
+						    'this.form.submit();'));
+    $r->print("</form>");
+    if ($is_empty && ($current_path ne '/')) {
+        $displayOut = '<form method="post" action="/adm/portfolio">'.
+        '<input type="hidden" name="action" value="deletedir" />'.
+        '<input type="submit" name="deletedir" value="'.&mt("Delete Directory").'" />'.
+        '<input type="hidden" name="selectfile" value="" />'.
+        '<input type="hidden" name="currentpath" value="'.$current_path.'" />'.
+        '</form>';
+        
+        $r->print($displayOut);
+	return;
+    }
+    $r->print('<table border="0" cellspacing="2" cellpadding="2">'.
+            '<tr><th>Select</th><th>&nbsp;</th><th>Name</th><th>Size</th><th>Last Modified</th></tr>');
+    my $href_location="/uploaded/$ENV{'user.domain'}/$ENV{'user.name'}/portfolio$current_path";
+    $r->print('<form method="post" action="/adm/portfolio">');
+    foreach my $line (sort 
+		      { 
+			  my ($afile)=split('&',$a,2);
+			  my ($bfile)=split('&',$b,2);
+			  return (lc($afile) cmp lc($bfile));
+		      } (@$dir_list)) {
+    	#$strip holds directory/file name
+    	#$dom 
+    	my ($filename,$dom,undef,$testdir,undef,undef,undef,undef,$size,undef,$mtime,undef,undef,undef,$obs,undef)=split(/\&/,$line,16); 
+    	if (($filename ne '.') && ($filename ne '..')) {
+            if ($dirptr&$testdir) {
+                $r->print('<tr bgcolor="#FFAA99"><td><img src="'.$iconpath.'folder_closed.gif"></td>');
+                $r->print('<td>Go to ...</td>');
+                $r->print('<td>'.&make_anchor($filename.'/',$current_path.$filename.'/').'</td>'); 
+                $r->print('</tr>'); 
+            } else {
+                $r->print('<tr bgcolor="#CCCCFF">');
+                $r->print('<td>
+                        <input type="checkbox" name="selectedfile" value="'.$filename.'" >
+                    </td>');
+                $r->print('<td><img src="'.$iconpath.'unknown.gif"></td>');
+                $r->print('<td><a href="'.$href_location.$filename.'">'.
+			    $filename.'</a></td>'); 
+                $r->print('<td>'.$size.'</td>');
+                $r->print('<td>'.&Apache::lonlocal::locallocaltime($mtime).'</td>');
+                $r->print('</tr>'); 
+            }
+        }
+    }
+    $r->print('<input type="submit" name="doit" value="Go" />
+                
+                <input type="hidden" name="currentpath" value="'.$current_path.'" />');
+
+#   <tr bgcolor="#FFAA99"> pink bg 
+#   <tr bgcolor="#CCCCFF"> blue bg            
+#   $r->print(&display_directory($current_path, $currentFile, @dir_list));
+#    $r->print('</td>><td>');
+#   $r->print(&display_actions($current_path, $currentFile, $isEmpty));
+    $r->print('</table></form>');
+}
 
 sub open_form {
     my ($r)=@_;
@@ -255,7 +344,45 @@
     }
     $r->print(&done());
 }
-
+sub select_files {
+    my ($r)=@_;
+    $r->print("<h1>Select portfolio files</h1>
+                Check as many as you wish in response to the essay problem.<br />");
+    my $portfolio_root = &Apache::loncommon::propath($ENV{'user.domain'},
+						 $ENV{'user.name'}).
+						'/userfiles/portfolio';
+    my $current_path='/';
+    if ($ENV{'form.currentpath'}) {
+	$current_path = $ENV{'form.currentpath'};
+    }
+    my @dir_list=&Apache::lonnet::dirlist($current_path,
+				    $ENV{'user.domain'},
+				    $ENV{'user.name'},$portfolio_root);
+    if ($dir_list[0] eq 'no_such_dir'){
+	# two main reasons for this:
+        #    1) never been here, so directory structure not created
+	#    2) back-button navigation after deleting a directory
+        if ($current_path eq '/'){
+	        &Apache::lonnet::mkdiruserfile($ENV{'user.name'},
+					       $ENV{'user.domain'},'portfolio');
+	} else {
+                # some directory that snuck in get rid of the directory
+                # from the recent pulldown, just in case
+	&Apache::lonhtmlcommon::remove_recent('portfolio',
+					      [$current_path]);
+	$current_path = '/'; # force it back to the root        
+	}
+	    # now grab the directory list again, for the first time
+	    @dir_list=&Apache::lonnet::dirlist($current_path,
+					    $ENV{'user.domain'},
+					    $ENV{'user.name'},$portfolio_root);
+    }
+    # need to know if directory is empty so it can be removed if desired
+    my $is_empty=(@dir_list == 2);
+    &display_file_select($r,$current_path,$is_empty,\@dir_list);
+    $r->print("</body>\n</html>\n");
+    return OK;
+}
 sub upload {
     my ($r)=@_;
     my $fname=$ENV{'form.uploaddoc.filename'};
@@ -335,7 +462,7 @@
 sub handler {
     # this handles file management
     my $r = shift;
-	my $portfolio_root = &Apache::loncommon::propath($ENV{'user.domain'},
+    my $portfolio_root = &Apache::loncommon::propath($ENV{'user.domain'},
 							 $ENV{'user.name'}).
 							'/userfiles/portfolio';
     &Apache::loncommon::no_cache($r);
@@ -349,7 +476,7 @@
     $r->rflush();
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
                                             ['selectfile','currentpath',
-					     'currentfile']);
+					     'currentfile','action']);
 	if (($ENV{'form.storeupl'} eq 'Upload') & (!$ENV{'form.uploaddoc.filename'})){
    	    $r->print('<font color="red"> No file was selected to upload.'.
    	            'To upload a file, click <strong>Browse...</strong>'.
@@ -357,6 +484,8 @@
 	}
     if ($ENV{'form.uploaddoc.filename'}) {
 	&upload($r);
+    } elsif ($ENV{'form.action'} eq 'selectfile') {
+        &select_files($r);
     } elsif ($ENV{'form.action'} eq 'delete' && $ENV{'form.confirmed'}) {
 	&delete_confirmed($r);
     } elsif ($ENV{'form.action'} eq 'delete') {

--banghart1097535141--