/[Perly]/lib/Perly/Action/Upload.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /lib/Perly/Action/Upload.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 23 - (show annotations)
Wed Jun 6 09:24:59 2007 UTC (17 years ago) by dpavlin
File size: 2385 byte(s)
wording of hint
1 use warnings;
2 use strict;
3
4 =head1 NAME
5
6 Perly::Action::Upload
7
8 =cut
9
10 package Perly::Action::Upload;
11 use base qw/Perly::Action::CreateCode Jifty::Action/;
12
13 use Perly::Model::Code;
14 use Perly::Model::Input;
15 use Data::UUID;
16
17 =head2 arguments
18
19 The fields for C<Upload> are:
20
21 =over 4
22
23 =item file: The uploaded file
24
25 =back
26
27 =cut
28
29 sub arguments {
30 {
31 filename => { label => 'Filename', hints => 'Optional for file upload' },
32 content => { label => 'The text version', render_as => 'Textarea', hints => 'Copy/paste content or upload file' },
33 file => {
34 label => '',
35 render_as => 'Upload',
36 },
37 format => {
38 label => 'Textfile format',
39 valid_values => [qw(input perl)],
40 default_value => 'auto',
41 render_as => 'select',
42 hints => 'Automatic detection of perl code is available',
43 }
44 }
45 }
46
47 =head2 take_action
48
49 Import the textfile dump
50
51 =cut
52
53 sub take_action {
54 my $self = shift;
55 unless( $self->argument_value('file') || $self->argument_value('content') ) {
56 $self->result->failure('You must upload something!');
57 return 1;
58 }
59
60 my $content;
61 my $filename;
62
63 if ( my $fh = $self->argument_value('file') ) {
64 local $/;
65 $content = <$fh>;
66
67 # This kills the filehandle from the action, so Apache::Session
68 # doesn't try to save it away (and fail) when we do the redirect
69
70 $self->argument_value( 'file', "" );
71 $filename = scalar( $fh );
72 } else {
73 $content = $self->argument_value('content');
74 my $uuid = Data::UUID->new();
75 $filename = $self->argument_value( 'filename' );
76 $filename ||= $uuid->create_str;
77 }
78
79
80 my $format = $self->argument_value( 'format' );
81 $format = 'perl' if ($content =~ m/perl/si || $filename =~ m/\.p[lm]$/i);
82
83 my $id;
84 if ( $format eq 'input' ) {
85 my $input = Perly::Model::Input->new();
86 eval {
87 $id = $input->create(
88 name => $filename,
89 content => $content,
90 );
91 };
92 die "$@" if ($@);
93 } else {
94 my $code = Perly::Model::Code->new();
95 eval {
96 $id = $code->create(
97 name => $filename,
98 source => $content,
99 );
100 };
101 die "$@" if ($@);
102 }
103
104 my $message = "Created $filename ($format) " . length( $content ) . " bytes [$id]";
105
106 # $self->result->content( $_ => $outcome->{$_} ) for keys %{$outcome};
107 $self->result->message($message);
108 warn "## $message";
109 delete Jifty->handler->stash->{RECORD_ARGUMENTS};
110 }
111
112 1;

  ViewVC Help
Powered by ViewVC 1.1.26