App-ZofCMS

 view release on metacpan or  search on metacpan

lib/App/ZofCMS/Plugin/YouTube.pm  view on Meta::CPAN


            my $dbh = DBI->connect_cached(
                @$conf{ qw/dsn user pass opt/ },
            );

            $dbh->do(
                "INSERT INTO $conf->{table} VALUES(?, ?, ?, ?, ?, ?);",
                undef,
                @$query{ qw/
                    plug_youtube_title
                    plug_youtube_link
                    plug_youtube_description
                /},
                $code,
                time(),
                do { my $id = rand() . time() . rand(); $id =~ tr/.//d; $id },
            );

            $t->param( form_ok => 1 );
        }
    }

    return $t->output;
}

sub _check_add_form {
    my ( $self, $query, $t ) = @_;

    my $error;
    unless ( defined $query->{plug_youtube_title}
        and length $query->{plug_youtube_title}
    ) {
        $error = q|Missing 'Title' parameter|;
    }

    unless ( defined $query->{plug_youtube_link}
        and length $query->{plug_youtube_link}
    ) {
        $error = q|Missing 'Link' parameter|;
    }

    unless ( $query->{plug_youtube_link} =~ /youtube[.]com/ ) {
        $error = q|Incorrect YouTube link|;
    }

    unless ( defined $query->{description} ) {
        $query->{description} = '';
    }

    if ( defined $error ) {
        $t->param( error => $error );
        return;
    }
    return 1;
}

sub _form_template {
    return <<'END_HTML_TEMPLATE_CODE';
<tmpl_if name="form_ok">
    <p>Video was successfully added.</p>
    <p><a href="/index.pl?page=<tmpl_var escape='html' name='page'>&dir=<tmpl_var escape='html' name='dir'>">Add another video</a></p>
<tmpl_else>
    <form action="" method="POST" id="plug_youtube_form">
    <div>
        <tmpl_if name="error"><p class="error"><tmpl_var escape='html' name='error'></tmpl_if>
        <input type="hidden" name="page" value="<tmpl_var escape='html' name='page'>">
        <input type="hidden" name="dir" value="<tmpl_var escape='html' name='dir'>">
        <ul>
            <li>
                <label for="plug_youtube_title">Title: </label
                ><input type="text" id="plug_youtube_title" name="plug_youtube_title" value="<tmpl_var escape='html' name='plug_youtube_title'>">
            </li>
            <li>
                <label for="plug_youtube_link">Link: </label
                ><input type="text" id="plug_youtube_link" name="plug_youtube_link" value="<tmpl_var escape='html' name='plug_youtube_link'>">
            </li>
            <li>
                <label for="plug_youtube_description">Description: </label
                ><textarea id="plug_youtube_description" name="plug_youtube_description" cols="60" rows="10"><tmpl_var escape='html' name='plug_youtube_description'></textarea>
            </li>
        </ul>
        <input type="submit" name="plug_youtube_submit" value="Add">
    </div>
    </form>
</tmpl_if>
END_HTML_TEMPLATE_CODE

}

sub _list_template {
    return <<'END_HTML_TEMPLATE_CODE';
<tmpl_if name='has_vids'>
    <ul id="plug_youtube_list">
        <tmpl_loop name='vids'>
        <li<tmpl_if name='alt_class'> class="alt"</tmpl_if>>
            <h<tmpl_var name='h_level'>><a href="<tmpl_var escape='html' name='link'>"><tmpl_var escape='html' name='title'></a></h<tmpl_var name='h_level'>>
            <p class="plug_youtube_time">Posted on: <tmpl_var name='time'></p>
            <div class="plug_youtube_video"><tmpl_var name='embed'></div>
            <p class="plug_youtube_description"><tmpl_var name='description'></p>
            <tmpl_if name='edit'>
                <form action="" method="POST">
                <div>
                    <input type="hidden" name="plug_youtube_vid_edit_id" value="<tmpl_var escape='html' name='id'>">
                    <input type="hidden" name="page" value="<tmpl_var escape='html' name='page'>">
                    <input type="hidden" name="dir" value="<tmpl_var escape='html' name='dir'>">
                    <input type="submit" class="input_submit submit_button_edit" name="plug_youtube_vid_edit_action" value="Edit">
                    <input type="submit" class="input_submit submit_button_delete" name="plug_youtube_vid_edit_action" value="Delete">
                </div>
                </form>
            </tmpl_if>
        </li>
        </tmpl_loop>
    </ul>
<tmpl_else>
    <p class="plug_youtube_no_vids">Currently there are no videos.</p>
</tmpl_if>
END_HTML_TEMPLATE_CODE
}

1;
__END__

=encoding utf8

=head1 NAME

App::ZofCMS::Plugin::YouTube - CRUD-type plugin to manage YouTube videos

=head1 SYNOPSIS

In your Main Config File or ZofCMS Template template:

    plugins => [ qw/YouTube/, ],

    plug_youtube => {
        dsn            => "DBI:mysql:database=test;host=localhost", # everything below is pretty much optional
        user            => '',
        pass            => '',
        opt             => { RaiseError => 1, AutoCommit => 1 },
        t_name          => 'plug_youtube',
        table           => 'videos',
        create_table    => 0,
        h_level         => 3,
        size            => 1,
        no_form         => 0,
        no_list         => 0,
        allow_edit      => 0,
        ua_args => [
            agent   => 'Opera 9.2',
            timeout => 30,
        ],
        filter          => {
            title       => qr/Foo/,
            description => qr/Bar/,
            link        => qr/234fd343/,
        },
    },

In your L<HTML::Template> template:

    <h2>Post new video</h2>
    <tmpl_var name='plug_youtube_form'>

    <h2>Existing Videos</h2>
    <tmpl_var name='plug_youtube_list'>



( run in 3.241 seconds using v1.01-cache-2.11-cpan-a49fcb8fa48 )