2011-12-28 14:11:10 +00:00
|
|
|
#!/mod/bin/jimsh
|
|
|
|
|
|
|
|
package require cgi
|
|
|
|
source /mod/var/mongoose/lib/setup
|
2011-12-29 00:57:18 +00:00
|
|
|
require clipboard.class ts.class chunked
|
2011-12-28 14:11:10 +00:00
|
|
|
|
2011-12-29 01:17:32 +00:00
|
|
|
start_chunked "text/html; no-cache\r\nExpires: Thu, 01 Jan 1970 00:00:00 GMT\r\nPragma: nocache"
|
2011-12-28 14:11:10 +00:00
|
|
|
|
2011-12-28 21:36:35 +00:00
|
|
|
cgi_input 1
|
2011-12-28 14:11:10 +00:00
|
|
|
#cgi_dump
|
|
|
|
|
|
|
|
set cb [[clipboard new {path "/tmp/webif-browse.cb"}] load]
|
|
|
|
|
|
|
|
set action [cgi_get act list]
|
|
|
|
|
|
|
|
switch $action {
|
|
|
|
list {
|
|
|
|
if {![$cb size]} {
|
2011-12-29 00:57:18 +00:00
|
|
|
chunk "<i>Clipboard is empty</i>"
|
|
|
|
break
|
2011-12-28 14:11:10 +00:00
|
|
|
}
|
2011-12-29 00:57:18 +00:00
|
|
|
chunk "<div class=cliplist>"
|
2011-12-28 21:36:35 +00:00
|
|
|
foreach file [$cb get items] {
|
|
|
|
set img "page_white_copy"
|
|
|
|
if {[$file get action] eq "cut"} {
|
|
|
|
set img "cut"
|
|
|
|
}
|
|
|
|
set path [$file get path]
|
|
|
|
set xpath [cgi_quote_html $path]
|
2011-12-29 00:57:18 +00:00
|
|
|
chunk "<span title=\"$xpath\" alt=\"$xpath\">"
|
|
|
|
chunk "<img src=/img/context/$img.png>"
|
2011-12-28 21:36:35 +00:00
|
|
|
set dfile [file tail $path]
|
|
|
|
if {[string length $dfile] > 25} {
|
|
|
|
set dfile "[string range $dfile 0 22]..."
|
|
|
|
}
|
|
|
|
if {[file isdirectory $path]} {
|
2011-12-29 00:57:18 +00:00
|
|
|
chunk "<img height=16
|
2011-12-28 21:36:35 +00:00
|
|
|
src=/images/711_1_09_Media_Folder.png>"
|
|
|
|
}
|
2011-12-29 00:57:18 +00:00
|
|
|
chunk [cgi_quote_html $dfile]
|
|
|
|
chunk "<a class=clipdel href=# alt=\"Remove\" title=\"Remove\"
|
2011-12-28 21:36:35 +00:00
|
|
|
path=\"[cgi_quote_url $path]\">
|
2011-12-29 01:17:32 +00:00
|
|
|
<img border=0 src=/img/close.png height=16></a>"
|
2011-12-29 00:57:18 +00:00
|
|
|
chunk "</span>"
|
2011-12-28 21:36:35 +00:00
|
|
|
}
|
2011-12-29 00:57:18 +00:00
|
|
|
chunk "</div>"
|
|
|
|
chunk "<button id=clipclear>Empty clipboard</button>"
|
2011-12-28 14:11:10 +00:00
|
|
|
}
|
|
|
|
add {
|
2011-12-28 21:36:35 +00:00
|
|
|
if {[set path [cgi_get path]] eq "0"} {
|
|
|
|
puts "No path."
|
|
|
|
exit
|
|
|
|
}
|
|
|
|
set mode [cgi_get mode copy]
|
|
|
|
foreach p [split $path ","] {
|
|
|
|
set p [cgi_unquote_input $p]
|
|
|
|
if {![$cb present $p]} {
|
|
|
|
$cb add $mode $p
|
2011-12-29 00:57:18 +00:00
|
|
|
chunk "Added $p for $mode<br>"
|
2011-12-28 21:36:35 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
$cb save
|
2011-12-28 14:11:10 +00:00
|
|
|
}
|
2011-12-28 21:36:35 +00:00
|
|
|
remove {
|
|
|
|
$cb remove [cgi_unquote_input [cgi_get path]]
|
|
|
|
$cb save
|
2011-12-28 14:11:10 +00:00
|
|
|
}
|
|
|
|
clear {
|
2011-12-28 21:36:35 +00:00
|
|
|
$cb clear
|
|
|
|
$cb save
|
2011-12-28 14:11:10 +00:00
|
|
|
}
|
2011-12-29 00:57:18 +00:00
|
|
|
paste {
|
|
|
|
set dir [cgi_unquote_input [cgi_get dir]]
|
|
|
|
foreach item [$cb get items] {
|
|
|
|
set path [$item get path]
|
|
|
|
set file [file tail $path]
|
|
|
|
set mode [$item get action]
|
|
|
|
|
|
|
|
chunk "Pasting $file"
|
|
|
|
chunk_pad
|
|
|
|
|
|
|
|
if {[file isdirectory $path]} {
|
|
|
|
# Directory
|
|
|
|
if {$mode eq "cut"} {
|
|
|
|
file rename $path "$dir/$file"
|
|
|
|
} else {
|
|
|
|
chunk [exec /mod/bin/busybox/cp -r \
|
|
|
|
$path $dir]
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
set root [file rootname $path]
|
|
|
|
# Protect special characters in root.
|
|
|
|
# In particular [] characters which are used a lot
|
|
|
|
# for torrent names.
|
|
|
|
regsub -all {([\\["$])} $root {\\\1} root
|
|
|
|
foreach f [glob -nocomplain "${root}.*"] {
|
|
|
|
if {$mode eq "cut"} {
|
|
|
|
file rename $f "$dir/[file tail $f]"
|
|
|
|
} else {
|
|
|
|
file copy $f "$dir/[file tail $f]"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$cb clear
|
|
|
|
$cb save
|
|
|
|
}
|
2011-12-28 14:11:10 +00:00
|
|
|
}
|
|
|
|
|
2011-12-29 00:57:18 +00:00
|
|
|
end_chunked
|
|
|
|
|