# -*-s2-*-
layerinfo type = "layout";
layerinfo name = "Opal (Libra OSWD)";
layerinfo lang = "en";
layerinfo author_name = "Ported by Kevin Phillips";
layerinfo author_email = "xevinx@livejournal.com";
layerinfo des = "Based on the Libra and Pasilda design available from Open Source Web Designs. Originally written by whompy.";
layerinfo redist_uniq = "opal/layout";
layerinfo previews = "opal/opal.jpg";
################################################################################
#
# Properties
#
propgroup presentation {
property use page_recent_items;
property use page_friends_items;
property use use_shared_pic;
property use view_entry_disabled;
property bool show_entry_userpic {
des = "Always display userpic?";
}
property int summary_items {
des = "Summary Items";
note="Maximum number of items in the Page Summary list. Set to 0 to turn off the Page Summary. Set to 100 to show all available items.";
}
property bool use_count {
noui=1;
}
property use linklist_support;
property use custom_control_strip_colors;
set summary_items = 100;
set show_entry_userpic = false;
set font_fallback = "sans-serif";
}
propgroup colors {
property Color color_bg {
des = "Background Color";
}
property Color color_bg_font {
des = "Background Font Color";
note = "The color of any font appearing on the background color.";
}
property Color color_med {
des = "Page Holder Background";
note = "This is the background of the main body, but within the outer borders.";
}
property Color color_med_font {
des = "Page Holder Font Color";
note="The color of the font appearing on the Page Holder Background color.";
}
property Color color_fg {
des = "Content Background Color";
note = "This is the background to the main content where the entries and side elements are.";
}
property Color color_fg_font {
des = "Content Font Color";
note = "The color of the font that appears on in the main Content area.";
}
property Color color_link {
des = "Link Color";
}
property Color color_visited {
des = "Visited Link Color";
}
property use control_strip_bgcolor;
property use control_strip_fgcolor;
property use control_strip_bordercolor;
property use control_strip_linkcolor;
set color_bg = "#2d3851";
set color_bg_font = "#ffffff";
set color_med = "#7C8AA4";
set color_med_font = "#e9f2fc";
set color_fg = "#BFC4CB";
set color_fg_font = "#333333";
}
propgroup fonts {
property use font_base;
property use font_fallback;
property string static_font_size { noui = 1; }
property string static_font_measurement { noui = 1; }
set static_font_size = "12";
set static_font_measurement = "px";
}
propgroup text {
property string free_text_header {
des = "Free Text Header";
}
property string free_text_text {
des = "Free Text Text";
cols = 30;
rows = 10;
string_mode = "html";
}
property string links_header {
des = "Links Header";
}
property string page_summary_title {
des = "Page Summary Header";
}
property use text_view_userinfo;
property use text_view_recent;
property use text_view_friends;
property use text_view_archive;
property string text_forward {
des = "Text to show in a link to skip forward through entries";
}
property string text_back {
des = "Text to show in a link to skip backward through entries";
}
property use text_read_comments;
property use text_read_comments_friends;
property use text_post_comment;
property use text_post_comment_friends;
property use text_comment_reply;
property use text_reply_back;
property use text_nosubject;
property use text_noentries_day;
property use text_meta_music;
property use text_meta_mood;
property use text_meta_location;
property use text_meta_groups;
set page_summary_title = "Page Summary";
set links_header = "Links";
set free_text_header = "About this journal";
set free_text_text = "";
set text_back = "Back";
set text_forward = "Forward";
}
propgroup customcss {
property use include_default_stylesheet;
property use linked_stylesheet;
property use custom_css;
}
set external_stylesheet = true;
set tags_aware = true;
function getAltColor (Color color, string dir, int num) : Color {
var int lt = $color->lightness();
if($dir == "light") {
if($lt > 200) {
$color = $color->darker($num);
} else {
$color = $color->lighter($num);
}
} elseif($dir == "dark") {
if($lt < 55) {
$color = $color->lighter($num);
} else {
$color = $color->darker($num);
}
}
return $color;
}
################################################################################
#
# Prop Init
#
function prop_init () {
if($*color_bg.as_string == "") { $*color_bg = "#000000"; }
if($*color_fg.as_string == "") { $*color_fg = "#000000"; }
if($*color_fg_font.as_string == "") { $*color_fg_font = "#000000"; }
var Color color_fg_dk = getAltColor($*color_fg, "dark", 20);
var Color alt_link_color = "#0000ff";
if ($*control_strip_bgcolor.as_string == "") {
$*control_strip_bgcolor = $*color_fg;
}
if ($*control_strip_fgcolor.as_string == "") {
$*control_strip_fgcolor = $*color_fg_font;
}
if ($*control_strip_bordercolor.as_string == "") {
$*control_strip_bordercolor = getAltColor($color_fg_dk, "dark", 30);
}
if ($*control_strip_linkcolor.as_string == "") {
$*control_strip_linkcolor = ($*color_link.as_string == "" ? $alt_link_color : $*color_link);
}
$*theme_bgcolor = $*color_fg;
$*theme_fgcolor = $*color_fg_font;
$*theme_bordercolor = getAltColor($color_fg_dk, "dark", 30);
$*theme_linkcolor = ($*color_link.as_string == "" ? $alt_link_color : $*color_link);
}
################################################################################
#
# Stylesheet
#
function print_stylesheet () {
var Color color_bg_lt = getAltColor($*color_bg, "light", 30);
var Color color_fg_dk = getAltColor($*color_fg, "dark", 20);
var Color color_fg_dk_font = getAltColor($*color_fg_font, "dark", 20);
var Color color_divider = getAltColor($color_fg_dk, "dark", 30);
var Color color_fg_dk_dk_font = getAltColor($color_fg_dk, "dark", 50);
var Color color_border = getAltColor($*color_bg, "light", 90);
var string base = ($*font_base != "") ? "$*font_base, " : "";
"""
body {
font-family: $base $*font_fallback;
background-color: $*color_bg;
margin: 10px;
}
.border4 { border: 1px solid $*color_bg; w\idth: 214px;}
.border3 { border: 1px solid $*color_fg; }
.border2 { border: 2px solid $color_border; }
""";
if($*color_link.as_string != "") {
"""
A { color: $*color_link; }
""";
}
if($*color_visited.as_string != "") {
"""
A:Visited { color: $*color_visited; }
""";
}
"""
#bodycontent"""; if (viewer_sees_vbox() or viewer_sees_hbox_top() or viewer_sees_hbox_bottom()) { ", .adcontent"; } """ { background-color: $*color_med; border: 1px solid $*color_bg; padding: 3px; }
#headerinfo {
background-color: $*color_bg;
color: $*color_bg_font;
text-align: right;
font-size: 10px;
padding: 2px;
margin-top: 1px;
}
#header { color: $*color_med_font; }
#header h3 { font-weight: normal; }
#userpic { float: right; }
.userpic2 {
float: right;
text-align: right;
margin-top: 2px;
margin-right: 3px;
}
#nav {
white-space: nowrap;
margin-bottom: 10px;
font-size: $*static_font_size$*static_font_measurement;
}
#nav A {
border: 1px solid $*color_bg;
padding-left: 10px;
padding-right: 10px;
padding-top: 2px;
padding-bottom: 2px;
height: 20px;
text-decoration: none;
color: $*color_bg_font;
background-color: $color_bg_lt;
}
#nav A:Hover { background-color: $*color_bg; }
#content {
background-color: $*color_fg;
border: 1px solid $color_fg_dk;
padding: 4px;
}
.columncontent {
background-color: $color_bg_lt;
border: 1px solid $*color_bg;
padding: 3px;
width: 200px;
font-size: $*static_font_size$*static_font_measurement;
color: $*color_bg_font;
}
.columnitem {
background-color: $color_fg_dk;
padding: 3px;
margin-top: 5px;
color: $*color_fg_font;
border-top: 1px solid $color_divider;
border-bottom: 1px solid $color_divider;
overflow: hidden;
}
.entries { color: $*color_fg_font; }
.entrydivider {
border-top: 1px solid $color_divider;
border-bottom: 1px solid $*color_fg;
}
.minicomment {
background-color: $color_fg_dk;
padding: 4px;
color: $*color_fg_font;
border: 1px solid $*color_fg;
font-size: $*static_font_size$*static_font_measurement;
}
.minicommentholder { border: 1px solid $color_divider; }
.entryinfo {
background-color: $color_fg_dk;
font-size: $*static_font_size$*static_font_measurement;
padding: 4px;
color: $*color_fg_font;
}
.postedby {
background-color: $color_fg_dk;
padding: 6px;
font-size: $*static_font_size$*static_font_measurement;
}
.entrylinks {
border-bottom: 1px solid $*color_fg;
background-color: $color_fg_dk;
padding-top: 4px;
padding-bottom: 4px;
font-size: $*static_font_size$*static_font_measurement;
}
.entrylinks A {
text-decoration: none;
padding-top: 4px;
padding-bottom: 4px;
white-space: nowrap;
color: $*color_fg_font;
border-right: 1px solid $*color_fg;
}
.entrylinks A:Hover {
background-color: $*color_fg;
}
.messageholder {
border: 1px solid $*color_bg;;
margin-bottom: 5px;
margin-top: 5px;
}
.systemmessage {
background-color: $color_bg_lt;
color: $*color_bg_font;
border: 1px solid $color_border;
font-size: $*static_font_size$*static_font_measurement;
}
.systemtext {
font-weight: normal;
padding-left: 10px;
padding-right: 10px;
}
.systemmessage A {
text-decoration: none;
padding-left: 10px;
padding-right: 10px;
color: $*color_bg_font;
padding-top: 4px;
padding-bottom: 4px;
}
.systemmessage A:Hover {
background-color: $*color_bg;
}
.systemmessage input, .systemmessage textarea, .systemmessage select {
background-color: $*color_fg;
color: $*color_fg_font;
}
.systemmessage TD {
padding: 4px;
font-size: $*static_font_size$*static_font_measurement;
color: $*color_bg_font;
}
.entry { margin-bottom: 30px; }
.entrytext { margin: 10px; }
.subject { font-weight: bold; }
.meta {
font-size: $*static_font_size$*static_font_measurement;
padding: 4px;
}
.meta A {
text-decoration: none;
color: $*color_link;
}
.subject A, .subject A:hover, .subject A:visited {
color: $*color_fg_font;
text-decoration: none;
}
.systemmessage A:Hover {
background-color: $*color_bg;
}
#sidecolumn TD { color: $*color_bg_font; }
#sidecolumn A {
text-decoration: none;
color: $*color_fg_font;
}
.sidetd {
width: 200px;
}
.backtop {
text-align: right;
}
.backtop A {
color: $*color_fg_font;
font-size: $*static_font_size$*static_font_measurement;
text-decoration: none;
padding-bottom: 1px;
}
#cal A {
text-decoration: none;
color: $*color_fg_font;
}
.calrow {
clear: both;
font-family: Arial, sans-serif;
}
.calempty {
width: 25px;
font-size: 11px;
margin: 1px;
float: left;
padding: 3px 0;
}
.calactitem {
float: left;
margin: 1px;
width: 24px;
font-size: 11px;
text-align: center;
background-color: $color_fg_dk;
border-right: 1px solid $color_bg_lt;
border-bottom: 1px solid $color_bg_lt;
padding: 3px 0;
}
.calinitem {
float: left;
margin: 1px;
width: 24px;
font-size: 11px;
text-align: center;
border-right: 1px solid $color_fg_dk;
border-bottom: 1px solid $color_fg_dk;
padding: 3px 0;
}
.friendcolor {
width: 10px;
height: 10px;
border: 2px solid $*color_fg;
}
.multiform {
font-weight: bold;
}
.ip {
color: $color_fg_dk_dk_font;
}
.friendname {
padding: 4px;
text-decoration: none;
border-left: 1px solid $*color_fg;
border-right: 1px solid $*color_fg;
}
.bigday {
font-size: 2em;
color: $color_fg_dk;
float: left;
font-weight: bolder;
}
.notablemessage {
padding: 4px;
}
.quickreply { margin-top: 5px;}
.reply_link { padding: 0 1em;}
""";
print_custom_control_strip_css();
}
################################################################################
#
# Global functions
#
function generateDots (string un) : string {
var string dots;
if($un != "") {
foreach var string s ($un) {
if($s == "a" or $s == "c" or $s == "e" or $s == "f" or $s == "h" or $s == "k" or $s == "m" or $s == "n" or $s == "p" or $s == "r" or $s == "t" or $s == "v" or $s == "x" or $s == "z") {
$dots = $dots + ":";
} elseif($s == " ") {
$dots = $dots + " ";
} else {
$dots = $dots + ".";
}
}
}
return $dots;
}
function print_box (string header, string text) {
"""
$e.poster.username
""";
if($e.poster.username != $e.journal.username) {
""" $e.journal""";
}
"""
""";
if($show_pic) {
"""
""";
}
if($show_name) {
$this->lay_make_username($e);
}
"""
$security $date $time
""";
$e.comments->print();
var Link link;
foreach var string key ($e.link_keyseq) {
$link = $e->get_link($key);
if (defined $link) {
"""
$link.caption """;
}
}
"""
$*text_permalink
""";
$this->print_reply_container({"target" => "topcomment"});
"""
""";
if ($.view != "entry") {
print $e->formatted_subject({"class"=>"subj-link"});
} else { "$e.subject"; }
"""
""";
"
"; $e->print_text(); "
";
$e->print_metadata();
"""
""";
var UserLite name;
if(defined $e.userpic and $*comment_userpic_style != "off") {
$name = $e.poster;
"""
""";
if (defined $e.userpic or (defined $e.userpic and $.view == "entry" and $*show_entry_userpic)) {
"""

""";
}
"""
""";
}
if ($.replyto isa Entry) {
var Entry en = $.replyto as Entry;
print safe """
$name
""";
$this->print_entry($en);
"""
""";
} else {
print safe """
$name
$time $date
""";
var Link link;
foreach var string key ($e.link_keyseq) {
$link = $e->get_link($key);
if (defined $link) {
"""
$link.caption """;
}
}
"""
$*text_permalink
""";
"""
$e.subject
""";
$e->print_text();
"""
""";
}
print_ebox($.entry);
"""
""";
$.form->print();
"""
""";
}
function Entry::print_metadata() {
var string caption;
var string val;
var Image i;
if ($this.tags) {
"""
""";
print $this->get_tags_text();
"
";
}
if (size $.metadata == 0) { return; }
foreach var string k ($.metadata) {
$caption = $k;
$val = $.metadata{$k};
if ($k == "music") {
$caption = $*text_meta_music;
}
elseif ($k == "location") {
$caption = $*text_meta_location;
}
elseif ($k == "groups") {
$caption = $*text_meta_groups;
}
elseif ($k == "mood") {
$caption = $*text_meta_mood;
if (defined $.mood_icon) {
$i = $.mood_icon;
$val = """

$val""";
}
}
println safe """
$caption: $val
""";
}
}
################################################################################
#
# RecentPage
#
function RecentPage::print_body () {
"""
""";
foreach var Entry e ($.entries) {
$this->print_entry($e);
print_ebox($e);
}
"""
""";
}
################################################################################
#
# YearPage
#
function YearPage::print_body {
$this->print_year_links();
"""
""";
foreach var YearMonth m ($.months) {
$this->print_month($m);
}
"""
""";
}
function YearPage::print_year_links() {
"""
""";
foreach var YearYear y ($.years) {
if ($y.displayed) {
"""
$y.year""";
} else {
"""
$y.year """;
}
}
"""
""";
}
function YearPage::print_month(YearMonth m) {
if (not $m.has_entries) { return; }
"""
""";
print $m->month_format();
print safe """
""";
foreach var int d (weekdays()) {
"""
$*lang_dayname_short[$d] |
""";
}
"""
""";
foreach var YearWeek w ($m.weeks) {
$w->print();
}
"""
""";
}
function YearWeek::print() {
"""
""";
if ($.pre_empty > 0) {
"""
|
""";
}
foreach var YearDay d ($.days) {
var string day = zeropad($d.day, 2);
"""
$day
""";
if ($d.num_entries > 0) {
var string num = $d.num_entries < 10 ? " " + string($d.num_entries) : string($d.num_entries);
"""
""";
}
"""
|
""";
}
"""
""";
}
################################################################################
#
# MonthPage
#
function MonthPage::view_title : string {
return $.date->date_format($*lang_fmt_month_long);
}
function MonthPage::print_body {
"
";
foreach var MonthDay d ($.days) {
if ($d.has_entries) {
"""
""";
$d->print_subjectlist();
"""
""";
}
}
}
function MonthDay::print_subjectlist() {
# Too many tables...
foreach var Entry e ($.entries) {
print $e.time->time_format("short") + ": ";
if ($e.poster.username != $e.journal.username) {
$e.poster->print(); " ";
}
"$e.security_icon";
if ($e.subject != "") {
"
$e.subject";
} else {
print safe """
$*text_nosubject""";
}
if ($e.comments.count > 0) {
print safe " - " + get_plural_phrase($e.comments.count, "text_read_comments");
}
if ($e.comments.screened) {
"
$*text_month_screened_comments";
}
"
\n";
}
}
################################################################################
#
# DayPage
#
function DayPage::print_body() {
"""
""";
if ($.has_entries) {
foreach var Entry e ($.entries) {
$this->print_entry($e);
print_ebox($e);
}
} else {
print safe "
$*text_noentries_day
";
}
"""
""";
}
################################################################################
#
# TagsPage
#
function TagsPage::print_body() {
"""
$*text_tags_page_header
""";
foreach var TagDetail td ($this->visible_tag_list()) {
var string uses = get_plural_phrase($td.use_count, "text_tag_uses");
print """- $td.name - $uses
""";
}
"""
""";
}
################################################################################
#
# Page
#
function Page::print () {
var string title = $this->title();
"""
""";
$this->print_head();
$this->print_stylesheets();
"""
$title
""";
$this->print_control_strip();
if (viewer_sees_vbox()) {
"""
""";
"""""";
}
if (viewer_sees_hbox_top()) {
"""""";
""" """;
$this->print_hbox_top();
" ";
" ";
}
"""
""";
$this->lay_print_userpic();
$this->lay_print_username();
$this->lay_print_header();
"""
""";
$this->lay_print_sidebar();
"""
|
""";
$this->lay_print_subnav();
$this->print_body();
$this->lay_print_subnav();
"""
|
|
""";
if (viewer_sees_hbox_bottom()) {
"""""";
""" """;
$this->print_hbox_bottom();
" ";
" ";
}
if (viewer_sees_vbox()) {
" | ";
"""""";
"""""";
"""""";
""" """;
$this->print_vbox();
" ";
" ";
" | ";
" |
";
}
"""
""";
}
function print_theme_preview() {
var Color color_bg_lt = getAltColor($*color_bg, "light", 30);
var Color color_fg_dk = getAltColor($*color_fg, "dark", 20);
var Color color_fg_dk_font = getAltColor($*color_fg_font, "dark", 20);
var Color color_divider = getAltColor($color_fg_dk, "dark", 30);
var Color color_fg_dk_dk_font = getAltColor($color_fg_dk, "dark", 50);
var Color color_border = getAltColor($*color_bg, "light", 90);
"""
Username - Title
Welcome
This is my new journal using a cool new style!
""";
}