[interchange] Expand table editor / imagehelper features for file uploads
Jon Jensen <[email protected]> Fri, 29 Apr 2016 03:03:19 +0000
| Newsgroups | gmane.comp.web.interchange.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit c40ea9cb796114450931d73602f9bc62dc80df9d Author: Jon Jensen <[email protected]> Date: Thu Mar 31 23:25:13 2016 -0600 Expand table editor / imagehelper features for file uploads code/Widget/imagehelper.widget | 38 +++++++++++++++++++++++++------------- lib/Vend/Table/Editor.pm | 10 ++++++---- 2 files changed, 31 insertions(+), 17 deletions(-) --- diff --git a/code/Widget/imagehelper.widget b/code/Widget/imagehelper.widget index 5364f05..79f6035 100644 --- a/code/Widget/imagehelper.widget +++ b/code/Widget/imagehelper.widget @@ -1,11 +1,9 @@ -# Copyright 2005-2007 Interchange Development Group and others +# Copyright 2005-2016 Interchange Development Group and others # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. See the LICENSE file for details. -# -# $Id: imagehelper.widget,v 1.6 2007-03-30 23:40:58 pajamian Exp $ CodeDef imagehelper Widget 1 CodeDef imagehelper Description Image upload @@ -21,6 +19,7 @@ sub { my $imagebase = $opt->{image_base} || $opt->{prepend}; Vend::Interpolate::vars_and_comments(\$path); + $path =~ s/^\s+//; Vend::Interpolate::vars_and_comments(\$imagebase); if ($imagebase ||= '') { $imagebase =~ s/^\s+//; @@ -28,9 +27,13 @@ sub { } my $of_widget; + my $orig_path = $path; if($path =~ s!/\*(?:\.([^/]+))?$!!) { my $spec = $1; - my @files = UI::Primitive::list_images($path, $spec); + my @files = grep {length} UI::Primitive::list_images($path, $spec); + unless (@files) { + @files = grep {length} UI::Primitive::list_glob($orig_path, $opt->{image_path}); + } unshift(@files, "=(none)"); my $passed = join ",", map { s/,/,/g; $_} @files; my $opt = { @@ -43,16 +46,25 @@ sub { undef, undef, $opt, { 'mv_data_file_oldfile' => $val } ); } else { - $of_widget = qq{<INPUT TYPE=hidden NAME=mv_data_file_oldfile VALUE="$val">}; + $of_widget = qq{<input type="hidden" name="mv_data_file_oldfile" value="$val"$Vend::Xtrailer>}; + } + + my $clean_path = $path; + $clean_path =~ s![\*/]+$!!; + $size = qq{ size="$size"} if $size > 0; + + # Ensure that the form is using multipart/form-data + $::Scratch->{mv_force_file_upload} = 1; + push @Vend::TmpScratch, 'mv_force_file_upload'; + + if ($val) { + qq{<a href="$imagebase$clean_path/$val">$val</a> <input type="hidden" name="mv_data_file_field" value="$name"$Vend::Xtrailer><input type="hidden" name="mv_data_file_name_from" value="$name_from"$Vend::Xtrailer> +<input type="hidden" name="mv_data_file_path" value="$clean_path"$Vend::Xtrailer>$of_widget<input type="file" name="$name" value="$val"$Vend::Xtrailer>}; + } + else { + qq{<input type="hidden" name="mv_data_file_field" value="$name"$Vend::Xtrailer><input type="hidden" name="mv_data_file_name_from" value="$name_from"$Vend::Xtrailer> +<input type="hidden" name="mv_data_file_path" value="$clean_path"$Vend::Xtrailer>$of_widget<input type="file" name="$name"$size$Vend::Xtrailer>}; } - $size = qq{ SIZE="$size"} if $size > 0; - if ($val) { - qq{<A HREF="$imagebase$path/$val">$val</A> <INPUT TYPE=hidden NAME=mv_data_file_field VALUE="$name"><INPUT TYPE=hidden NAME=mv_data_file_name_from VALUE="$name_from"> -<INPUT TYPE=hidden NAME=mv_data_file_path VALUE="$path">$of_widget<INPUT TYPE=file NAME="$name" VALUE="$val">}; - } else { - qq{<INPUT TYPE=hidden NAME=mv_data_file_field VALUE="$name"><INPUT TYPE=hidden NAME=mv_data_file_name_from VALUE="$name_from"> -<INPUT TYPE=hidden NAME=mv_data_file_path VALUE="$path">$of_widget<INPUT TYPE=file NAME="$name"$size>}; - } } EOR diff --git a/lib/Vend/Table/Editor.pm b/lib/Vend/Table/Editor.pm index 78b6c23..141eed3 100644 --- a/lib/Vend/Table/Editor.pm +++ b/lib/Vend/Table/Editor.pm @@ -1,8 +1,6 @@ # Vend::Table::Editor - Swiss-army-knife table editor for Interchange # -# $Id: Editor.pm,v 1.93 2009-03-20 18:59:35 mheins Exp $ -# -# Copyright (C) 2002-2008 Interchange Development Group +# Copyright (C) 2002-2016 Interchange Development Group # Copyright (C) 2002 Mike Heins <[email protected]> # # This program was originally based on Vend 0.2 and 0.3 @@ -26,7 +24,7 @@ package Vend::Table::Editor; use vars qw($VERSION); -$VERSION = substr(q$Revision: 1.93 $, 10); +$VERSION = '1.94'; use Vend::Util; use Vend::Interpolate; @@ -4139,6 +4137,10 @@ EOF $rowcount++; } + if (delete $::Scratch->{mv_force_file_upload} and $outhash{FORM_BEGIN} !~ /form-data/) { + $outhash{FORM_BEGIN} =~ s#># enctype="multipart/form-data">#; + } + $::Scratch->{mv_data_enable} = ''; if($opt->{auto_secure}) { $::Scratch->{mv_data_enable} .= "$table:" . join(",", @data_enable) . ':';