On Wed, Dec 31, 2008 at 03:37:13PM +0000, Oliver Charles wrote:
> Hi,
> 
> This has hit me a few times, and I've just encountered it again, so I
> thought it would be good to ask those wiser than I :)
> 
> There have been a few times where I could do with querying the
> database (which I'd normally do through $c->model), but this is not
> available. For example, I've added the option for users to specify how
> to display dates on our website, through a variety of formats. I
> thought the best way to do this, would be using a Template Toolkit
> plugin:
> 
>     [% USE user_date %]
>     The date is [% user_date.format(some_date) %].
> 
> However, this plugin needs to access the user preferences model
> ($c->model('UserPreference')->date_format($user)).

Don't know about your plugin, but shouldn't you be able to get $c from
the template stash?  $stash = $context->stash.  Then use
$stash->get().

But, I'm with Ash on this -- I only allow users to specify a timezone
(and language/locale).

So I set:

    $c->stash->{user_time} = $current_user
        ? sub { return shift->clone->set_time_zone( 
$current_user->timezone->name || 'UTC' ) }
        : sub { return shift };

And then use:

    [% user_time(item.start_time).strftime( '%x %X' ) %]

I leave the format in the template as it seems like a display issue
that template authors might want more control over w/o having to
update the application.


On another project I set up TT vmethods that defined a number of
formats and then in the template I would do:

    [% item.start_time.full_date %]
or
    [% item.start_time.time_with_zone %]

But, I'm not sold on that approach.

-- 
Bill Moseley
mose...@hank.org
Sent from my iMutt


_______________________________________________
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/

Reply via email to