# $Id: attach.tcl 1204 2009-02-02 19:54:23Z hubert@u.washington.edu $ # ======================================================================== # Copyright 2006 University of Washington # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # ======================================================================== # attach.tcl # # Purpose: CGI script to handle attaching attachment # to composition via queryattach generated form # # Input: set attach_vars { {cid "Missing Command ID"} {file "Missing File Upload Data"} {attachop "" ""} {cancel "" ""} } # Output: # ## read vars foreach item $attach_vars { if {[catch {cgi_import [lindex $item 0].x}]} { if {[catch {eval WPImport $item} result]} { error [list _action "Impart Variable" $result] } } else { set [lindex $item 0] 1 } } if {$cancel == 1 || [string compare cancel [string tolower $cancel]] == 0 || [string compare cancel [string tolower $attachop]] == 0} { } else { if {$cid != [WPCmd PEInfo key]} { catch {WPCmd PEInfo statmsg "Invalid Command ID"} } if {[string length [lindex $file 1]]} { if {[catch {cgi_import description}]} { set description "" } # "file" is a list: local_file remote_file content-type/content-subtype # trim path from file name on remote system # since we can't be certain what the delimiter is, # try the usual suspects set delims [list "\\" "/" ":"] set native [lindex $file 1] if {[string length $native]} { foreach delim $delims { if {[set crop [string last $delim $native]] >= 0} { set native [string range $native [expr {$crop + 1}] [string length $native]] break; } } regsub -all "'" $native "\\'" jsnative if {0 == [string length [lindex $file 2]]} { set conttype [list text plain] } else { set conttype [split [lindex $file 2] "/"] } set id [WPCmd PECompose attach [lindex $file 0] [lindex $conttype 0] [lindex $conttype 1] $native $description] catch {unset style} set restore 1 if {[catch {WPCmd PEInfo lappend suspended_composition [list attach $id]} result]} { WPCmd PEInfo statmsg "Cannot append attachment info, nothing attached" } set fsize [file size [lindex $file 0]] if {$fsize <= 0} { WPCmd PEInfo statmsg "Attachment $jsnative empty or nonexistent" } } else { WPCmd PEInfo statmsg "Requested attachment does not exist" } } else { catch {file delete [lindex $file 0]} WPCmd PEInfo statmsg "Empty file name, nothing attached" } } source [WPTFScript compose]