1
0
Fork 0

lots of changes. described in description

changed config to point to reference by default
added reference character, showing all options.
added date to required references.
modified code to handle some overrides, and adding current year.
added sticky footer to css.
rewrote templates to match schema in reference. improved features.
master
Olivia Theze 2015-03-07 12:03:24 -05:00
parent 7aef58a46b
commit 9aa30f6091
9 changed files with 283 additions and 123 deletions

View File

@ -2,7 +2,7 @@
siteroot: /home/olivia/code/charbase/lib
public: public
views: views
dsn: yaml://%siteroot%/../characters.yml
dsn: yaml://%siteroot%/../reference.yml
site:
name: Charbase

View File

@ -6,5 +6,5 @@ require 'liquid'
require 'yaml'
require 'charbase/app'
require 'json'
require 'date'
Charbase::App.run!

View File

@ -29,7 +29,7 @@ module Charbase
char = {}
char["characters"] = @characters["characters"].select { |c| c["hidden"] != true }
liquid :index, :locals => {:s => @site, :c => char}
liquid :index, :locals => {:s => @site, :c => char, :year => DateTime.now.strftime("%Y")}
end
get "/assets/css/characters.css" do
char = {}
@ -72,19 +72,20 @@ module Charbase
# this is a nasty hack, eventually i should find a way to add a filter
# to liquid to do this.
for x in [ "description","bodydesc","attire","skills","magic" ]
for x in [ "description","appearance","personality","attire","skills","magic" ].push(*char["overrides"]["paragraph"])
if char[x] != nil and char[x].include?("\n\n")
char[x].gsub!(/\n\n/,"</p><p>")
end
end
# end hack
liquid :character, :locals => {:site => @site, :character => char}
liquid :character, :locals => {:site => @site, :character => char, :year => DateTime.now.strftime("%Y")}
end
get "/assets/css/:nick.css" do |nick|
char = @characters["characters"].select { |n| n["nick"] == nick }.first
content_type "text/css"
liquid :usercss, :locals => {:site => @site, :character => char}
liquid :usercss, :locals => {:site => @site, :css => char["overrides"]["css"], :nick => char["nick"]}
end
end

View File

@ -51,3 +51,24 @@ body {
margin-left: auto;
margin-right: auto
}
html {
position: relative;
min-height: 100%;
}
body {
/* Margin bottom by footer height */
margin-bottom: 60px;
}
.footer {
position: absolute;
bottom: 0;
width: 100%;
/* Set the fixed height of the footer here */
height: 60px;
background-color: inherit;
}
.footer .container .text-muted {
margin: 20px 0;
}

View File

@ -30,8 +30,8 @@
<div class="container">
<div class="sheet-header">
{% if character.avatar %}
<img src="{% unless user.avatar contains 'http' %}{{site.imgdir}}/{% endunless %}{{character.avatar}}" />
{% if character.images.avatar %}
<img src="{% unless user.avatar contains 'http' %}{{site.imgdir}}/{% endunless %}{{character.images.avatar}}" />
{% endif %}
<span class="sheet-header" id="title">
{% if character.name %}
@ -46,85 +46,47 @@
<div class="sheet-body">
<h2>Summary</h2>
<p>{{character.description}}</p>
{% if character.ref %}
{% if character.images.ref %}
<div class="refsheet">
<h2>Reference Sheet</h2>
<img src="{% unless user.avatar contains 'http' %}{{site.imgdir}}/{% endunless %}{{character.ref}}" />
<img src="{% unless user.avatar contains 'http' %}{{site.imgdir}}/{% endunless %}{{character.images.ref}}" />
</div>
{% endif %}
{% if character.stat %}
{% if character.stats %}
<h2>Statistics</h2>
<dl>
{% for s in character.stat %}
<dt>
{% if s.desc %}\
<dl class="dl-horizontal">
{% for s in character.stats %}
<div class="pair">
<div class="dl-emu-key">
{% if s.desc %}
<abbr title="{{s.desc}}">
{% endif %}
{{s.key}}
{% if s.desc %}
</abbr>
{% endif %}
</dt>
<dd>{{stat.value}}</dd>
</div>
<div class="dl-emu-value">{{s.value}}</div>
</div>
{% endfor %}
</dl>
</div>
{% endif %}
<div class="clearfix" />
<h2>General Details</h2>
<div class="dl-emu">
{% if character.general.sex %}
{% for attr in character.general.attr %}
<div class="pair">
<div class="dl-emu-key">Sex</div>
<div class="dl-emu-value">{{character.general.sex}}</div>
<div class="dl-emu-key">{{ attr[0] | replace:"_"," " | capitalize }}</div>
<div class="dl-emu-value">{{attr[1]}}</div>
</div>
{% endif %}
{% if character.general.gender %}
<div class="pair">
<div class="dl-emu-key">Gender</div>
<div class="dl-emu-value">{{character.general.gender}}</div>
</div>
{% endif %}
{% if character.general.class %}
<div class="pair">
<div class="dl-emu-key">Class</div>
<div class="dl-emu-value">{{character.general.class}}</div class="dl-emu-key">
</div>
{% endif %}
{% if character.general.alignment %}
<div class="pair">
<div class="dl-emu-key">Alignment</div>
<div class="dl-emu-value">{{character.general.alignment}}</div>
</div>
{% endif %}
{% if character.general.species %}
<div class="pair">
<div class="dl-emu-key">Species</div>
<div class="dl-emu-value">{{character.general.species}} </div>
</div>
{% endif %}
{% if character.general.build %}
<div class="pair">
<div class="dl-emu-key">Build</div>
<div class="dl-emu-value">{{character.general.build}}</div>
</div>
{% endif %}
{% if character.general.height %}
<div class="pair">
<div class="dl-emu-key">Height</div>
<div class="dl-emu-value">{{character.general.height}}</div>
</div>
{% endif %}
{% if character.general.weight %}
<div class="pair">
<div class="dl-emu-key">Weight</div>
<div class="dl-emu-value">{{character.general.weight}}</div>
</div>
{% endif %}
{% endfor %}
</div>
<span class="clearfix"></span>
{% if character.general.colors %}
{% if character.general.color %}
<h2>Colours</h2>
<div class="dl-emu sheet-colors">
{% for col in character.general.colors %}
{% for col in character.general.color %}
<div class="pair">
<div class="dl-emu-key">
{{col.text}}
@ -140,12 +102,16 @@
</div>
<div class="clearfix" style="margin-bottom: 3em;"></div>
{% if character.bodydesc %}
{% if character.appearance %}
<h2>Appearance</h2>
<p> {{character.bodydesc}} </p>
<p>{{character.appearance}}</p>
{% endif %}
{% if character.personality %}
<h2>Personality</h2>
<p>{{character.personality}}</p>
{% endif %}
{% if character.attire %}
<h2>Clothing</h2>
<h2>Clothing/Equipment</h2>
<p> {{character.attire}}</p>
{% endif %}
{% if character.skills or character.magic %}
@ -163,7 +129,23 @@
{% endif %}
</div>
</div>
<footer class="footer">
<div class="container">
<ul class="text-muted list-inline"
<li>Powered by <a href="http://bitbucket.com/foxiepaws/charbase/">Charbase</a> </li>
<li>Code under BSD2</li>
{% if character.player %}
<li>
{% if character.name %}
{{character.name | split:" " | first}} &copy; {{year}} {{character.player}}
{% else %}
{{character.nick}} &copy; {{year}} {{character.player}}
{% endif %}
</li>
{% endif %}
</ul>
</div>
</footer>

View File

@ -1,29 +1,31 @@
/* front page character overrides. */
{% for ch in c.characters %}
{% if ch.overrides.css.backgroundcolor or ch.overrides.css.textcolor or ch.overrides.css.navbarcolor or ch.overrides.css.navhovercolor %}
/* classes for {{ch.nick}} */
{% if ch.overrides.css.backgroundcolor or ch.overrides.css.textcolor %}
.cu-{{ch.nick}} {
{% if ch.overrides.css.backgroundcolor %}
background-color: {{ch.overrides.css.backgroundcolor}};
border-color: {{ch.overrides.css.backgroundcolor}};
{% endif %}
{% if ch.overrides.css.textcolor %}
color: {{ch.overrides.css.textcolor}};
{%endif%}
}
{% endif %}
{% if ch.overrides.css.navbarcolor or ch.overrides.css.navhovercolor %}
.cu-{{ch.nick}}:hover {
{% if ch.overrides.css.navbarcolor %}
background-color: {{ch.overrides.css.navbarcolor}};
border-color: {{ch.overrides.css.navbarcolor}};
{% endif %}
{% if ch.overrides.css.navhovercolor %}
color: {{ch.overrides.css.navhovoercolor}}
{% endif %}
}
{% endif %}
{% endif %}
{% if ch.overrides.css.color.homepagebg or ch.overrides.css.color.homepagehoverbg or ch.overrides.css.color.homepagefg or ch.overrides.css.color.homepagehoverfg %}
/* classes for {{ch.nick}} */
{% if ch.overrides.css.color.homepagebg or ch.overrides.css.color.homepagefg %}
.cu-{{ch.nick}} { {% if ch.overrides.css.color.homepagebg %}
background-color: {{ch.overrides.css.color.homepagebg}};
border-color: {{ch.overrides.css.color.homepagebg}};{% endif %}{% if ch.overrides.css.color.homepagefg %}
color: {{ch.overrides.css.color.homepagefg}};{% endif %}
}
{%endif %}{% if ch.overrides.css.color.homepagehoverbg or ch.overrides.css.color.homepagehoverfg %}
.cu-{{ch.nick}}:hover { {% if ch.overrides.css.color.homepagehoverbg %}
background-color: {{ch.overrides.css.color.homepagehoverbg}};
border-color: {{ch.overrides.css.color.homepagehoverbg}};{% endif %}{% if ch.overrides.css.color.homepagehoverfg %}
color: {{ch.overrides.css.color.homepagehoverfg }};{% endif %}
}{% endif %}
{% elsif ch.overrides.css.color.background or ch.overrides.css.color.text or ch.overrides.css.color.navfg or ch.overriced.css.color.navbg %}
/* classes for {{ch.nick}} */{% if ch.overrides.css.color.background or ch.overrides.css.color.text %}
.cu-{{ch.nick}} { {% if ch.overrides.css.color.background %}
background-color: {{ch.overrides.css.color.background}};
border-color: {{ch.overrides.css.color.background}};{% endif %}{% if ch.overrides.css.color.text %}
color: {{ch.overrides.css.color.text}};{%endif%}
}{% endif %}
{% if ch.overrides.css.color.navbg or ch.overrides.css.color.navhoverfg %}
.cu-{{ch.nick}}:hover { {% if ch.overrides.css.color.navbg %}
background-color: {{ch.overrides.css.color.navbg}};
border-color: {{ch.overrides.css.color.navbg}};{% endif %}{% if ch.overrides.css.color.navhoverfg %}
color: {{ch.overrides.css.color.navhoverfg}}{% endif %}
}{% endif %}{% endif %}
{% endfor %}

View File

@ -55,11 +55,13 @@
<div class="container">
{% for character in c.characters %}
<div class="character-unit cu-{{character.nick}}" onClick="location='/character/{{character.nick}}'"/>
{% if character.avatar %}
<img src="{% unless user.avatar contains 'http' %}{{s.imgdir}}/{% endunless %}{{character.avatar}}" />
{% if character.image.homepage %}
<img src="{% unless user.image.homepage contains 'http' %}{{s.imgdir}}/{% endunless %}{{character.image.homepage}}" />
{% elsif character.image.avatar %}
<img src="{% unless user.image.avatar contains 'http' %}{{s.imgdir}}/{% endunless %}{{character.image.avatar}}" />
{% else %}
<img src="{{s.imgdir}}/no_avatar.png" />
{% endif %}
{% endif %}
<span class="character-unit" id="title">
{% if character.name %}
<h1>{{character.name}}</h1>
@ -75,6 +77,13 @@
<footer class="footer">
<div class="container">
<ul class="text-muted list-inline"
<li>Powered by <a href="http://bitbucket.com/foxiepaws/charbase/">Charbase</a> </li>
<li>Code under BSD2</li>
</ul>
</div>
</footer>
</body>
</html>

View File

@ -1,40 +1,58 @@
/* css for {{character.nick}} */
/* css for {{nick}} */
{% if character.overrides.css.backgroundcolor or character.overrides.css.textcolor or character.overrides.css.navbarcolor or character.overrides.css.navhovercolor or character.overrides.css.linkcolor or character.overrides.css.linkhovercolor %}
{% if css.color.background or css.color.text or css.color.navbg or css.color.navhoverbg or css.color.navactivebg or css.color.navfg or css.color.navhoverfg or css.color.navactivefg %}
/* rules generated from yaml css overrides section */
{% if character.overrides.css.backgroundcolor or character.overrides.css.textcolor %}
{% if css.color.background or css.color.text %}
body {
{% if character.overrides.css.backgroundcolor %}
background-color: {{character.overrides.css.backgroundcolor}};
{% if css.color.background %}
background-color: {{css.color.background}};
{% endif %}
{% if character.overrides.css.textcolor %}
color: {{character.overrides.css.textcolor }};
{% if css.color.text %}
color: {{css.color.text }};
{% endif %}
}
{% endif %}
{% endif %}
{% if character.overrides.css.navbarcolor or character.overrides.css.textcolor %}
.navbar, .navbar-default,
.navbar .navbar-brand,
.navbar .navbar-nav li a {
{% if character.overrides.css.navbarcolor %}
background-color: {{character.overrides.css.navbarcolor}};
border-color: {{character.overrides.css.navbarcolor}};
{% endif %}
{% if character.overrides.css.textcolor %}
color: {{character.overrides.css.textcolor}};
{% endif %}
{% if css.color.navbg or css.color.navfg or css.color.navborder %}
.navbar, .navbar-default,
.navbar .navbar-brand,
.navbar .navbar-nav li a {
{% if css.color.navbg %}
background-color: {{css.color.navbg}};
{% endif %}
{% if css.color.navborder %}
border-color: {{css.color.navborder}};
{% elsif css.color.navbg %}
border-color: {{css.color.navbg}};
{% endif %}
{% if css.color.navfg %}
color: {{css.color.navfg}};
{% endif %}
}
{% endif %}
{% if character.overrides.css.navhovercolor %}
.navbar .navbar-brand:hover,
{% if css.color.navhoverfg %}
.navbar .navbar-brand:hover {
color: {{css.color.navhoverfg}};
}
{% endif %}
{% if css.color.navhoverfg or css.color.navhoverbg or css.color.navhoverborder%}
.navbar .navbar-nav li a:hover {
color: {{character.overrides.css.navhovercolor}};
{% if css.color.navhoverfg %}
color: {{css.color.navhoverfg}};
{%endif %}
{% if css.color.navhoverborder %}
border-color: {{css.color.navhoverborder}};
{% elsif css.color.navhoverbg %}
border-color: {{css.color.navhoverbg}};
{% endif %}
{% if css.color.navhoverbg %}
background-color: {{css.color.navhoverbg}};
{% endif %}
}
{% endif %}
{% if character.overrides.css.userrules %}
{% if character.overrides.css.style %}
/* user-defined custom rules */
{{character.overrides.css.style}}
{{css.style}}
{% endif %}

127
reference.yml Normal file
View File

@ -0,0 +1,127 @@
characters: # array of all characters
- nick: reference # required: nickname/id for loading character.
hidden: false # optional: is sheet hidden from public if true
overrides: # all values in this section are optional.
css: # css knobs
color: # change color without writing css.
# overrides the background of the character sheet
background: '#fff'
# overrides the text colour of the character sheet
text: '#333'
# overrides the navbar background color on the character sheet
navbg: '#f8f8f8'
# overrides the color the navbar's background is while hovering
navhoverbg: '#f8f8f8'
# override the background color of the active link in the navbar
navactivebg: '#f8f8f8'
# override the foreground (text) color of the navbar
navfg: '#777'
# override the text color of the navbar while hovering
navhoverfg: '#333'
# override the text color of the active link on the navbar
navactivefg: '#777'
# override the border color of the navbar
navborder: '#e7e7e7'
# override the border color of the navbar while hovering
navhoverborder: '#e7e7e7'
# override the border color of the navbar while active
navactiveborder: '#e7e7e7'
# override the background color of the homepage banner
homepagebg: '#fff'
# override the background color of the homepage banner while hovering
homepagehoverbg: '#fff'
# override the text color of the homepage banner
homepagefg: '#fff'
# override the text color of the homepage banner while hovering
homepagehoverfg: '#fff'
style: # rules and text to add to the css file directly.
# todo: make this a working feature.
# override the order of the page, and fields used.
# order: ["desc","ref","general.attr","general.color","appearence","attire","skills","magic"]
paragraph: "" # additional sections to convert to paragraphs go here.
# an optional real name for the character to go by
name: Reference Character
# optional player of character, shown in footer in the copyright notice.
player: foxiepaws
general:
attr: # required section: any key/value pair can go here, keys will be title-cased and underbars will be replaced with spaces. examples follow.
age: 21
sex: female
gender: female
class: Mage
alignment: Lawful Good
species: Human
build: average
height: 5'9"
weight: 144lbs
color: # optional section: each color must have a location and text, hex value is optional.
- location: skin
text: White
- location: hair
text: Brown
- location: eyes
text: Blue
hex: '#4259e0'
stats: # optional section, must have key and value, desc (description) optional. example based on ADD basic stats
- key: STR
desc: Strength
value: 0
- key: DEX
desc: Dexterity
value: 0
- key: CON
value: 0
- key: INT
value: 0
- key: WIS
value: 0
- key: CHA
value: 0
images:
avatar: reference_avatar.png
homepage: reference_avatar-transparent.png
ref: reference_refsheet.png
more: # optional section
- path: /path/to/uploaded/file
caption: Some image
- path: http://somehostsite/path/to/file
caption: another image!
description: |
This section is shown at the top of the page as a summary.
It is required for each character.
double line breaks (\n\n) will be interpreted as the start
of a new paragraph
appearance: |
This section is used to describe what your character looks like in general.
It is not used for clothing/equipment, just a general overview. It also
supports double linebreaks -> paragraphs. It is optional.
personality: |
This section is used to describe your character's personality, it is optional
and supports formatting into paragraphs.
attire: |
This section is used to describe what your character wears. It is optional and
supports splitting into paragraphs
skills: |
This section is used to describe what skills your character has. it is optional
and supports splitting into paragraphs. It appears first in the skills and magic
section of the default template.
magic: |
This section is used to describe what magical abilities, hexes placed on, effects,
charms, etc your character has. it is optional, supports splitting into paragraphs
and appears second in the Skills and Magic section on the default template
# more sections can be added, and simply need to be added to the template in most cases.