E2-Interface
view release on metacpan or search on metacpan
Scratchpad.pm view on Meta::CPAN
use warnings;
use Carp;
use E2::Ticker;
our @ISA = ("E2::Ticker");
our $VERSION = "0.32";
our $DEBUG; *DEBUG = *E2::Interface::DEBUG;
sub new {
my $arg = shift;
my $class = ref($arg) || $arg;
my $self = $class->SUPER::new( @_ );
$self->{text} = undef;
$self->{user} = undef;
$self->{shared} = undef;
return $self;
}
sub text { return $_[0]->{text} }
sub user { return $_[0]->{user} }
sub shared { return $_[0]->{shared} }
sub load {
my $self = shift or croak "Usage: scratch_pad E2SCRATCHPAD [, USER ]";
my $user_id = shift;
my %opt;
warn "E2::Scratchpad::load" if $DEBUG > 1;
$opt{scratch} = $user_id if $user_id;
my $handlers = {
'scratchtxt' => sub {
(my $a, my $b) = @_;
$self->{text} = $b->text;
$self->{user} = $b->{att}->{user};
$self->{shared} = $b->{att}->{user};
}
};
$self->{text} = undef;
$self->{user} = undef;
$self->{shared} = undef;
return $self->thread_then(
[
\&E2::Ticker::parse,
$self,
'scratch',
$handlers,
[], # dummy value for array
%opt
],
sub { return $self->user ? 1 : 0 }
);
}
sub update {
my $self = shift or croak "Usage: update E2SCRATCHPAD [ TEXT ] [, SHARE ]";
my $text = shift;
my $share = shift;
warn "E2::Scratchpad::update" if $DEBUG > 1;
# Must be logged in AND either updating the text or the share
# (or both)
if( ! $self->logged_in ) {
warn "Unable to update scratchpad: not logged in" if $DEBUG;
return undef;
}
if( ! defined $text && ! defined $share ) {
warn "Nothing to update" if $DEBUG;
return undef;
}
my %req = (
node => 'E2 Scratch Pad',
skratchsubmit => 1,
sexisgood => 1,
submit => 'Update!'
);
if( defined $text ) {
$req{skratch} = $text;
}
if( defined $share ) {
# ...
}
$self->thread_then(
[ \&E2::Interface::process_request, $self, %req ],
sub {
# FIXME: test for success
return 1;
}
);
}
1;
__END__
=head1 NAME
E2::Scratchpad - A module for loading and setting a user's E2 Scratch Pad.
=head1 SYNOPSIS
use E2::Scratchpad;
use E2::User; # We need to get a user's user_id
my $scratch = new E2::Scratchpad;
# Load nate's scratchpad
my $user = new E2::User;
$user->load( 'nate' )
( run in 1.102 second using v1.01-cache-2.11-cpan-39bf76dae61 )