package Foorum::Plugin::FoorumUtils;
use strict;
use warnings;
our $VERSION = '1.001000';
sub load_once {
my ( $c, $url ) = @_;
# do not load twice
return
if ($c->stash->{__load_once_in_tt}
and $c->stash->{__load_once_in_tt}->{$url} );
$c->stash->{__load_once_in_tt}->{$url} = 1;
if ( $url =~ /\.js$/i ) {
# jquery.js and jquery.ui.js
if ( $url eq 'jquery.js' ) {
return
qq~\n~;
} elsif ( $url eq 'jquery.ui.js' ) {
return
qq~\n~;
} else {
my $js_dir = $c->config->{dir}->{js};
return
qq~\n~;
}
} elsif ( $url =~ /\.css$/i ) {
# jquery.ui.css
if ( $url eq 'jquery.ui.css' ) {
return
qq~\n~;
} else {
my $static_dir = $c->config->{dir}->{static};
return
qq~\n~;
}
}
}
sub user_online {
my ( $c, $title ) = @_;
my $path = $c->req->path;
$path = ($path) ? substr( $path, 0, 255 ) : 'forum'; # varchar(255)
$c->create_session_id_if_needed; # must have a sessionid
my $session_id = $c->sessionid;
my $user_id = ( $c->user_exists ) ? $c->user->user_id : 0;
# check if there is a rs
my $online = $c->model('DBIC::UserOnline')
->find( { sessionid => $session_id, } );
if ($online) {
$online->update(
{ user_id => $user_id,
path => $path,
title => $title,
last_time => time()
}
);
} else {
$c->model('DBIC::UserOnline')->create(
{ sessionid => $session_id,
user_id => $user_id,
path => $path,
title => $title,
start_time => time(),
last_time => time()
}
);
}
return;
}
1;
__END__
=pod
=head1 NAME
Foorum::Plugin::FoorumUtils - pollute $c by Foorum
=head1 FUNCTIONS
=over 4
=item load_once
Multi-times [% c.load_once('jquery.js') %] would only write one script tag in TT.
It is a trick for INCLUDE tt.html may call the same script src many times.
so does css. [% c.load_once('default.css') %]
We insert before the 'jquery.js' with [% c.config.dir.js %] and the 'default.css' with [% c.config.dir.static %]/css
=back
=head1 AUTHOR
Fayland Lam
=cut