The Perl Advent Calendar needs more articles for 2022. Submit your idea today!

NAME

Slovo::Plugin::TagHelpers - additional and advanced tag helpers

SYNOPSIS

  <%=
  select_box
    page_type => [map {[$_=>$_]}], @$page_types]
    required => 1, label => 'Page type'
  %>

DESCRIPTION

Slovo::Plugin::TagHelpers extends Mojolicious::Plugin::TagHelpers and implements some additional helpers. Slovo::Plugin::DefaultHelpers and Slovo::Plugin::TagHelpers are loaded unconditionally after all other mandatory for Slovo plugins.

HELPERS

The following helpers are currently implemented.

checkboxes

    <%
    my $groups = [
        [berov => 1, disabled => undef],
        [admin => 2],
        [foo   => 3]
    ];
    %>
    <%= checkboxes(groups => $groups, label =>'Множества') %>

    <div class="mui-textfield groups">
        <label for="groups">Множества</label>
        <div class="mui-checkbox">
            <label><input disabled name="groups" type="checkbox" value="1"> berov</label>
            <label><input name="groups" type="checkbox" value="2"> admin</label>
            <label><input name="groups" type="checkbox" value="3"> foo</label>
        </div>
    </div>

Generates a group of checkboxes with same name wrapped with a div tag with class mui-textfield $name. If label attribute is not provided, a label is derived from the $name. Suitable for fields with multiple values.

html_substr

   %= html_substr($writing->{teaser}//$writing->{body}, 'p,blockquote', 225);

Parameters: $c, $html, $selector, $chars

Get all_text for each $selector from $html and does substr on the last so the total characters in the produced output are not more than $chars. Starts from the first character in the first matched $selector. In case the $html is simple text, produces <p> elements.

javascripts

Add one JS file to "defaults" in Mojolicious <$app-defaults->{javascripts}>>. Intended for use in a plugin's register method.

    $app->javascripts('/js/foo.js');
    $app->javascripts('/js/bar.js');

When invoked without arguments, returns the list of generated tags for those files, found in <$c-stash->{javascripts}>>.

    %=javascripts

    # returns
    <script src="/path/to/foo.js"></script>
    <script src="/path/to/bar.js"></script>

select_box

    <%=
    select_box
      published => [['for (p)review' => 1], ['no' => 0], ['Yes' => 2]],
      value     => 2,
      label     => 'Published';
    %>

    <%=
    select_box
      colors => [(white green red blue yellow)],
      value     => [qw(white green)],
      label     => 'Favorite colors'
      multiple => undef
    %>

This is a wrapper for "select_field" in Mojolicious::Plugin::TagHelpers with additional optional attributes label and value. If label is not provided, the name of the field is used as label. If value is not provided, it is retreived from input $c->every_param($name) by the wrapped select_field. If value is provided it does $c->param($name => $attrs{value}). The generated tags are wrapped in a div tag with class="mui-select $name".

stylesheets

Adds an item to <$app-defaults->{stylesheets}>> and returns $c. Intended for use in a plugin's register method.

    $app->stylesheets('/css/bar.css');
    $app->stylesheets('/css/foo.css');

When invoked without arguments, returns the list of generated tags for those files, found in <$c-stash->{stylesheets}>>.

    %=stylesheets
    #returns:
    <link rel="stylesheet" href="/css/foo.css" />
    <link rel="stylesheet" href="/css/bar.css" />

METHODS

The usual method is implemented.

register

Calls the parent's register if needed and registers additional helpers in Slovo application.

SEE ALSO

Mojolicious::Plugin::TagHelpers, Slovo::Plugin::DefaultHelpers