The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Mojolicious::Plugin::Blog - Mojolicious Plugin

SYNOPSIS

  # Mojolicious

  # Set authentication condition
  my $conditions = {
    authenticated => sub {
        my $self = shift;
        unless ($self->session('authenticated')) {
            $self->flash(
                class   => 'alert alert-info',
                message => 'Please log in first!'
            );
            $self->redirect_to('/login');
            return;
        }
        return 1;
    },
  };

  $self->plugin('Blog' => {
      authCondition => $conditions
      dsn => "dbi:SQLite:dbname=db/myblog.db",
    }
  );

  # Mojolicious::Lite
  plugin 'Blog' => {
    authCondition => $conditions,
    dsn => "dbi:SQLite:dbname=db/myblog.db",
  };


  # Pre-populate db
  ./bin/mojo-blog-db sqlite db/myblog.db

  # Running the example
  morbo ./eg/tiniblog

  # See available routes
  ./eg/tiniblog routes

DESCRIPTION

Mojolicious::Plugin::Blog is a Mojolicious plugin. The database layer is using DBIx::ResultSet so support for most databases is available. The examples in this distribution utilize Postgres.

OPTIONS

The blog options provide the gateway into defining your routes, database connection, authentication conditions, blog title, slogan, and more.

title

Your blog title.

slogan

Blog slogan.

author

Who are you?

contact

Your email

tz

What timezone are you? e.g. 'America/New_York' for EST.

social

Not implemented yet. However, support for integrating github, coderwall, twitter, and others coming soon.

    # Social Integration options
    social => {
        github    => 'battlemidget',
        coderwall => 'battlemidget',
        twitter   => 'ajscg',
    },

dsn

Database URI

dbuser

Database User

dbpass

Database password

dbconn

Database connection, doesn't need to be manually set.

dbrs

Database Resultset, again doesn't need to be set unless you implement your own database layer.

indexPath

Blog index route

archivePath

Blog archive path

postPath

Blog detail post path

adminPathPrefix

Blog admin prefix route

namespace

Blog controller namespace.

authCondition

Router bridge for authencating the blog admin section. See the SYNOPSIS for example.

renderType

Not Implemented, however the thought behind this was to allow return JSON in case someone wanted to override existing templates.

METHODS

Mojolicious::Plugin::Blog inherits all methods from Mojolicious::Plugin and implements the following new ones.

register

  $plugin->register(Mojolicious->new);

Register plugin in Mojolicious application.

WHAT WORKS

Examples are included to show a working copy of the blog plugin for viewing blog posts, creating/updating/deleting posts. As well as a elementary way of authenticating to show the working admin portion.

TODO

  • Add form validation

  • Make default pages look less 1990s.

GOALS

Hopefully make this as database agnostic as possible and the overall plugin a useful starting point for those wishing to implement a blog in Mojolicious.

PATCHES

I love patches and community involvement, so please get involved and submit pull requests and issues at

https://github.com/battlemidget/Mojolicious-Plugin-Blog

SEE ALSO

Mojolicious, Mojolicious::Guides, http://mojolicio.us.

COPYRIGHT AND LICENSE

This plugin is copyright (c) 2013 by Adam Stokes <adamjs@cpan.org>

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

Mojolicious is copyright (c) 2013 Sebastian Riedel <sri@cpan.org>