Bootylicious
view release on metacpan or search on metacpan
bootylicious view on Meta::CPAN
@@ layouts/wrapper.html.ep
<!doctype html>
<head>
<meta charset="UTF-8">
<title><%= $title ? "$title / " : '' %><%= config 'title' %></title>
<link rel="stylesheet" href="/styles.css" type="text/css" />
<%= stylesheet '/styles.css' %>
% if (config 'rss_enabled') {
<link rel="alternate" type="application/rss+xml" title="<%= config 'title' %>" href="<%= href_to_rss %>" />
% }
% if (comments_enabled && config 'rss_enabled') {
<link rel="alternate" type="application/rss+xml" title="<%= config 'title' %> Comments" href="<%= href_to_comments_rss %>" />
% }
<meta name="generator" content="<%= generator %>" />
<%= meta %>
<%= js %>
<%= css %>
</head>
<body>
<div id="body">
<div id="header">
<h1 id="title">
<%= link_to_home %>
% if (config 'rss_enabled') {
<sup><a href="<%= href_to_rss %>"><img src="/rss.png" alt="RSS" /></a></sup>
% }
</h1>
<h2 id="description"><%= config 'description' %></h2>
% if (my $author = config 'author') {
<span id="author"><%= config 'author' %></span>,
% }
<span id="about"><%= config 'about' %></span>
<div id="menu"><%= menu %></div>
</div>
<div id="content">
<%= content %>
</div>
<div class="push"></div>
</div>
<div id="footer"><%== config 'footer' %></div>
</body>
</html>
@@ styles.css
html, body {height: 100%;margin:0}
body {background: #fff;font-family: Georgia, "Bitstream Charter", serif;line-height:25px}
h1,h2,h3,h4,h5 {font-family: times, "Times New Roman", times-roman, serif; line-height: 40px; letter-spacing: -1px; color: #444; margin: 0 0 0 0; padding: 0 0 0 0; font-weight: 100;}
a,a:active {color:#555}
a:hover{color:#000}
a:visited{color:#000}
img{border:0px}
pre{line-height:18px;border:2px solid #ccc;background:#eee;padding:1em;overflow:auto;overflow-y:visible;width:600px;}
blockquote{border:2px solid #ccc;background:#eee;padding:1em}
#body {width:65%;min-height:100%;height:auto !important;height:100%;margin:0 auto -6em;}
#header {text-align:center;padding:2em 0em 0.5em 0em;border-bottom: 1px solid #000}
h1#title{font-size:3em}
h2#description{font-size:1.5em;color:#999}
span#author {font-weight:bold}
span#about {font-style:italic}
#menu {padding-top:1em;text-align:right}
#content {background:#FFFFFF}
.article-meta {line-height:18px;color:#999;margin-left:10px;font-size:small;font-style:italic;padding-bottom:0.5em}
.artcle-content {}
.modified {margin:0px}
.tags a{color:#999}
.text {padding:2em;}
.text h1.title {font-size:2.5em}
.error {padding:2em;text-align:center}
.more {margin-left:10px;padding-bottom:1em;}
#pager {text-align:center;padding:2em; color:#ccc}}
#pager span.active {color:#000}
#pager span.arrow {background:#fff}
#subfooter {padding:2em;border-top:#000000 1px solid}
#footer{width:65%;margin:auto;font-size:80%;text-align:center;padding:2em 0em 2em 0em;border-top:#000000 1px solid;height:2em;}
.center {text-align:center}
.push {height:6em}
input.comment, textarea {font-size:150%;width:60%}
textarea {height:200px}
textarea.bpr {display: none}
label {color:#999}
.required {color:red}
#pingbacks, #comments, #comment-form {padding:1em 0px}
#pingbacks .content, #comments .content, #comment-form .content {padding-left:1em}
#comments .comment .meta {line-height:18px;color:#999;margin-left:10px;font-size:small;font-style:italic;padding-bottom:0.5em}
#comments .comment .author {font-weight:bold}
#comments .comment .content {padding-bottom:2em}
.tip {font-size:smaller;color:#bbb;font-style:italic;padding-left:1em}
.tip a{color:#bbb}
.tip-required {padding:1em 0px;}
.tip-required-bot {font-style:italic;font-size:small;color:#999;line-height:18px}
.comment-tags {font-style:italic;font-size:small;color:#999;line-height:18px;margin-bottom:1em}
.content div.error {text-align:left;padding:0;color:red}
img.gravatar {float:left; padding-right:0.5em}
.comment-counter {color:#999;font-size:small;margin-left:10px}
.comment-counter a {color:#999}
@@ rss.png (base64)
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ
bWFnZVJlYWR5ccllPAAAAlJJREFUeNqkU0toU0EUPfPJtOZDm9gSPzWVKloXgiCCInXTRTZVQcSN
LtyF6qILFwoVV+7EjR9oFy7VlSAVF+ouqMWWqCCIrbYSosaARNGmSV7ee+OdyUsMogtx4HBn5t1z
7twz85jWGv8zZHaUmRjlHBnBkRYSCSnog/wzuECZMzxgDNPEW5E0ASHTl4qf6h+KD6iwUpwyuRCw
kcCCNSPoRsNZKeS31D8WTOHLkqoagbQhV+sV1fDqEJQoidSCCMiMjskZU9HU4AAJpJsC0gokTGVD
XnfhA0DRL7+Hn38M/foOeOUzOJEZs+2Cqy5F1iXs3PZLYEGl+ux1NF7eAmpfIXedQOjYbYgdh9tk
Y3oTsDAnNCewPZqF8/SKjdqs+7aCj5wFDkwSlUEvzFgyPK8twNvuBv3GzixgzfgcQmNXqW/68IgE
is+BvRPQ0fXE9eC7Lvy/Cfi5G8DSQ7DkTrCxKbrgJPSTS5TUDQwfgWvIBO0Dvv+bgPFAz12Dzl4E
7p5svpQ9p6HLy9DFF2CD+9sCHpG9DgHHeGAExDglZnLAj09APgts2N089pdFsPjmXwIuHAJk8JKL
rXtuDWtWtQwWiliScFapQJedKxKsVFA0KezVUeMvprcfHDkua6uRzqsylQ2hE2ZPqXAld+/tTfIg
I56VgNG1SDkuhmIb+3tELCLRTYYpRdVDFpwgCJL2fJfXFufLS4Xl6v3z7zBvXkdqUxjJc8M4tC2C
fdDoNe62XPaCaOEBVOjbm++YnSphpuSiZAR6CFQS4h//ZJJD7acAAwCdOg/D5ZiZiQAAAABJRU5E
rkJggg==
@@ bootylicious.conf
%# Bootylicious configuration
%#
%# This configuration is in JSON format, that is preprocessed by Mojo::Template.
%# Yes, you can use Perl here.
{
%# Change this to something not guessable
%# "secret" : "Unique string",
%# Blog description settings
%# "author" : "whoami",
%# "email" : "",
%# "title" : "Just another blog",
%# "about" : "Perl hacker",
%# "description" : "I do not know if I need this",
%# Article rendering settings
%# "cuttag" : "[cut]",
%# "cuttext" : "Keep reading",
%# "pagelimit" : 10,
%# "datefmt" : "%a, %d %b %Y"
%# Appearence settings
%# "menu" : [
%# "index", "/",
%# "tags", "/tags.html",
%# "archive", "/articles.html"
%# ],
%# "footer" : "Powered by <a href=\"https://github.com/vti/bootylicious\">Bootylicious</a>",
%# "theme" : "",
%# Additional HTML tags
( run in 0.814 second using v1.01-cache-2.11-cpan-39bf76dae61 )