[Jifty-commit] r3667 - in jifty/trunk: inc/Module lib/Jifty/Plugin
lib/Jifty/Plugin/Userpic
jifty-commit at lists.jifty.org
jifty-commit at lists.jifty.org
Wed Jul 11 14:03:17 EDT 2007
Author: jesse
Date: Wed Jul 11 14:03:16 2007
New Revision: 3667
Added:
jifty/trunk/lib/Jifty/Plugin/Userpic/
jifty/trunk/lib/Jifty/Plugin/Userpic.pm
jifty/trunk/lib/Jifty/Plugin/Userpic/Dispatcher.pm
jifty/trunk/lib/Jifty/Plugin/Userpic/View.pm
jifty/trunk/lib/Jifty/Plugin/Userpic/Widget.pm
Modified:
jifty/trunk/ (props changed)
jifty/trunk/META.yml
jifty/trunk/inc/Module/Install.pm
Log:
r60382 at mobile131: jesse | 2007-07-10 23:07:23 -0700
* Incredibly naive "image column" userpic plugin.
- should mark the column as not to be preloaded in regular operation
- should not hardocde mimetype
- should have a pretty ajax picker
- should limit the image's size
Modified: jifty/trunk/META.yml
==============================================================================
--- jifty/trunk/META.yml (original)
+++ jifty/trunk/META.yml Wed Jul 11 14:03:16 2007
@@ -39,6 +39,7 @@
Test::HTTP::Server::Simple: 0.02
Test::MockModule: 0.05
Test::MockObject: 1.07
+ WWW::Facebook::API: 0.3.6
requires:
App::CLI: 0.03
CGI: 3.19
@@ -81,6 +82,7 @@
Hash::Merge: 0
Hook::LexWrap: 0
IPC::PubSub: 0.23
+ IPC::Run3: 0
JSON::Syck: 0.15
Jifty::DBI: 0.40
LWP::UserAgent: 0
@@ -100,7 +102,7 @@
Scalar::Defer: 0.10
Shell::Command: 0
String::Koremutake: 0
- Template::Declare: 0.07
+ Template::Declare: 0.21
Test::Base: 0
Test::LongString: 0
Test::More: 0.62
Modified: jifty/trunk/inc/Module/Install.pm
==============================================================================
--- jifty/trunk/inc/Module/Install.pm (original)
+++ jifty/trunk/inc/Module/Install.pm Wed Jul 11 14:03:16 2007
@@ -86,7 +86,7 @@
# delegate back to parent dirs
goto &$code unless $cwd eq $pwd;
}
- $$sym =~ /([^:]+)$/ or Carp::confess "Cannot autoload $who - $sym";
+ $$sym =~ /([^:]+)$/ or die "Cannot autoload $who - $sym";
unshift @_, ($self, $1);
goto &{$self->can('call')} unless uc($1) eq $1;
};
Added: jifty/trunk/lib/Jifty/Plugin/Userpic.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/lib/Jifty/Plugin/Userpic.pm Wed Jul 11 14:03:16 2007
@@ -0,0 +1,42 @@
+use strict;
+use warnings;
+
+package Jifty::Plugin::Userpic;
+use base qw/Jifty::Plugin Class::Accessor::Fast/;
+
+
+=head1 NAME
+
+Jifty::Plugin::Userpic
+
+=head1 SYNOPSIS
+
+In your model class schema description, add the following:
+
+ column userpic => is Userpic;
+
+
+=head1 DESCRIPTION
+
+This plugin provides user pictures for Jifty;
+
+
+=cut
+
+use Jifty::DBI::Schema;
+
+sub _userpic {
+ my ($column, $from) = @_;
+ my $name = $column->name;
+ $column->type('blob');
+}
+
+use Jifty::DBI::Schema;
+
+Jifty::DBI::Schema->register_types(
+ Userpic =>
+ sub { _init_handler is \&_userpic, render_as 'Jifty::Plugin::Userpic::Widget'},
+);
+
+
+1;
Added: jifty/trunk/lib/Jifty/Plugin/Userpic/Dispatcher.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/lib/Jifty/Plugin/Userpic/Dispatcher.pm Wed Jul 11 14:03:16 2007
@@ -0,0 +1,23 @@
+package Jifty::Plugin::Userpic::Dispatcher;
+
+use Jifty::Dispatcher -base;
+
+on '/=/plugin/userpic/*/#/*' => run {
+ my $class = $1;
+ my $id = $2;
+ my $field = $3;
+
+ if ($class->isa('Jifty::Record')) {
+
+ my $item = $class->new();
+ $item->load($id);
+
+ if ($item->id) {
+ set item => $item;
+ set field => $field;
+ show '/userpic/image';
+ }
+ }
+};
+
+1;
Added: jifty/trunk/lib/Jifty/Plugin/Userpic/View.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/lib/Jifty/Plugin/Userpic/View.pm Wed Jul 11 14:03:16 2007
@@ -0,0 +1,12 @@
+package Jifty::Plugin::Userpic::View;
+
+use Jifty::View::Declare -base;
+
+template 'userpic/image' => sub {
+ my ($item,$field) = get(qw(item field));
+ Jifty->handler->apache->content_type("image/jpeg");
+ outs_raw($item->$field());
+
+};
+
+1;
Added: jifty/trunk/lib/Jifty/Plugin/Userpic/Widget.pm
==============================================================================
--- (empty file)
+++ jifty/trunk/lib/Jifty/Plugin/Userpic/Widget.pm Wed Jul 11 14:03:16 2007
@@ -0,0 +1,59 @@
+use warnings;
+use strict;
+
+package Jifty::Plugin::Userpic::Widget;
+
+use base qw/Jifty::Web::Form::Field/;
+
+=head1 NAME
+
+Jifty::Plugin::Userpic::Widget - google map widget for geolocation display and editing
+
+=head1 METHODS
+
+
+=cut
+
+sub accessors { shift->SUPER::accessors() };
+
+=head2 render_widget
+
+Renders form fields as googlemap widget.
+
+=cut
+
+sub render_widget {
+ my $self = shift;
+ my $readonly = shift;
+ my $action = $self->action;
+ $readonly = $readonly ? 1 : 0;
+
+ if ( $self->current_value ) {
+ Jifty->web->out( qq{<img src="/=/plugin/userpic/}
+ . $self->action->record_class . "/"
+ . $action->record->id . '/'
+ . $self->name
+ . qq{">} );
+ }
+ unless ($readonly) {
+ my $field = qq!<input type="file" name="@{[ $self->input_name ]}" !;
+ $field .= $self->_widget_class();
+ $field .= qq!/>!;
+ Jifty->web->out($field);
+ }
+ '';
+}
+
+
+=head2 render_value
+
+Renders value as a checkbox widget.
+
+=cut
+
+sub render_value {
+ $_[0]->render_widget('readonly');
+ return '';
+}
+
+1;
More information about the Jifty-commit
mailing list