[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