#!/usr/bin/env perl package ShrinkURL::Action::CreateShrunkenURL; use strict; use warnings; use base qw/Jifty::Action::Record::Create/; sub record_class { 'ShrinkURL::Model::ShrunkenURL' } # have we already shrunk this URL? if so, no need to do it again! sub take_action { my $self = shift; my $url = $self->argument_value('url'); my $shrunkenurl = ShrinkURL::Model::ShrunkenURL->new; $shrunkenurl->load_by_cols(url => $url); if ($shrunkenurl->id) { # for the benefit of report_success $self->record($shrunkenurl); # for the benefit of the template that displays new shrunken URLs # this is called in a superclass which we bypass $self->result->content(id => $shrunkenurl->id); # this too is called in a superclass $self->report_success; # Create actions return object's ID return $shrunkenurl->id; } return $self->SUPER::take_action(@_); } # display a nice little message for the user sub report_success { my $self = shift; $self->result->message(_("URL shrunked to %1", $self->record->shrunken)); } 1;