Ado
view release on metacpan or search on metacpan
lib/Ado/Plugin/AdoHelpers.pm view on Meta::CPAN
else { # a string
$js .= $c->javascript(sub {$a}) . $/;
}
}
return $js;
}
1;
=encoding utf8
=head1 NAME
Ado::Plugin::AdoHelpers - Default Ado helpers plugin
=head1 SYNOPSIS
# Ado
$self->plugin('AdoHelpers');
# Mojolicious::Lite
plugin 'AdoHelpers';
=head1 DESCRIPTION
L<Ado::Plugin::AdoHelpers> is a collection of renderer helpers for
L<Ado>.
This is a core plugin, that means it is always enabled and its code a good
example for learning to build new plugins, you're welcome to fork it.
See L<Ado::Manual::Plugins/PLUGINS> for a list of plugins that are available
by default.
=head1 HELPERS
L<Ado::Plugin::AdoHelpers> implements the following helpers.
=head2 do_sql_file
Your plugin may need to add some new tables, add columns to already
existing tables or insert some data. This method allows you to do that.
See the source code of L<Ado::Plugin::Vest> for example.
The SQL file will be slurped, multiline comments will be removed.
The content will be split into C<';'> and each statement will be executed
using L<DBI/do>.
# in a plugin somewhere in register
$app->do_sql_file(catfile($self->config_dir, $sql_file));
$app->do_sql_file($conf->{vest_data_sql_file});
# on the command line
$ ado eval 'app->do_sql_file(shift)' some_file.sql
# elsewhere in an application
$app->do_sql_file($sql_file)
=head2 head_css, head_javascript
Minimalist asset management for the C<E<lt>headE<gt>> section. Appends and
later renders assets (links to files and code-snippets) to
C<$c-E<gt>stash('head_css')> and C<app-E<gt>stash('head_javascript')>. The new
assets are only appended if they are not already present in the corresponding
list of assets. The defaults are populated in C<etc/ado.conf>. See also:
L<Mojolicious/defaults>; L<Mojolicious::Plugin::AssetPack>.
#in a template:
#append
<%
head_css([
'vendor/SemanticUI/components/popup.min.css'
'#myid { font-size:xx-small }'
]);
head_javascript([
'vendor/SemanticUI/components/popup.min.js'
'jQuery( function($){ $('#ado-img').popup() })'
]);
%>
<!-- or -->
# or
% head_javascript begin
jQuery( function($){ $('#ado-img').popup() });
% end;
# render in templates/partials/head.html.ep
%== head_css;
<link href="css/ado.css" rel='stylesheet' type='text/css' />
<link href='//fonts.googleapis.com/css?family=Ubuntu&subset=latin,cyrillic'
rel='stylesheet' type='text/css' />
%== head_javascript;
=head2 to_json
Suitable for preparing JavaScript
objects from Perl references that will be used from stash and in templates.
my $chars = $c->to_json({name =>'ÐеÑÑÑ',id=>2});
$c->stash(user_as_js => $chars);
# in a javascript chunk of a template
var user = <%== $user_as_js %>;
var user_group_names = <%== to_json([user->ingroup]) %>;
=head2 user
Returns the current user. This is the user C<guest> for not authenticated users.
This helper is a wrapper for L<Ado::Control/user>.
$c->user(Ado::Model::Users->query("SELECT * from users WHERE login_name='guest'"));
#in a controller action:
my $current_user = $c->user;
#in a template:
<h1>Hello, <%=user->name%>!</h1>
=head1 METHODS
L<Ado::Plugin::AdoHelpers> inherits all methods from
L<Ado::Plugin> and implements the following new ones.
=head2 register
( run in 2.835 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )