#!/usr/bin/env perl package ShrinkURL::View; use strict; use warnings; use Jifty::View::Declare -base; template 'shrink' => page { # render the "shrink a URL" widget, which we can put on any page of the app render_region( name => 'new_shrink', path => '/misc/new_shrink', ); # render an empty region that we push results onto render_region( name => 'new_shrinks', ); }; template '/misc/new_shrink' => sub { my $action = new_action(class => 'CreateShrunkenURL'); form { Jifty->web->form->register_action($action); render_action($action => ['url']); form_submit( submit => $action, label => _('Shrink it!'), onclick => [ { submit => $action }, { # prepend this result onto the empty region above region => 'new_shrinks', prepend => '/misc/shrunk_region', args => { id => { result_of => $action, name => 'id' }, }, }, ], ); }; }; template '/misc/shrunk_region' => sub { my $id = get 'id'; my $shrunken = ShrinkURL::Model::ShrunkenURL->new; $shrunken->load($id); if ($shrunken->id) { div { strong { a { attr { href => $shrunken->shrunken } $shrunken->shrunken } }; outs _(" is now a shortcut for %1.", $shrunken->url); } } }; 1;