1690 lines
49 KiB
Plaintext
Executable File
1690 lines
49 KiB
Plaintext
Executable File
# -*-s2-*-
|
|
|
|
|
|
## -- n e b u l a ! -- ######################################################
|
|
|
|
layerinfo type = "layout";
|
|
layerinfo name = "Nebula";
|
|
layerinfo redist_uniq = "nebula/layout";
|
|
|
|
layerinfo author_name = "jc";
|
|
layerinfo author_email = "jc@livejournal.com";
|
|
layerinfo des = "A simple but incredibly flexible design with sidebar, that can look as simple or as complicated as you like.";
|
|
layerinfo lang = "en";
|
|
|
|
|
|
## -- p r o p e r t i e s -- ################################################
|
|
|
|
propgroup colors = "Colors";
|
|
propgroup colors {
|
|
property Color col_weaker_fg {
|
|
des = "Default text color for the page";
|
|
note = "This only really affects the calendar strip, although it is used elsewhere. Text color on content areas is more important.";
|
|
}
|
|
property Color col_weak_fg {
|
|
des = "Text color on content areas";
|
|
}
|
|
property Color col_stronger_fg {
|
|
des = "Text color on headers";
|
|
}
|
|
property Color col_strong_fg {
|
|
des = "Text color on menus";
|
|
}
|
|
property Color col_neutral_fg {
|
|
des = "Text color on titles";
|
|
}
|
|
|
|
property Color col_cmtbarone_fg {
|
|
des = "Text color on comment bars";
|
|
}
|
|
property Color col_cmtbartwo_fg {
|
|
des = "Text color on alternating comment bars";
|
|
}
|
|
property Color col_cmtbarscrn_fg {
|
|
des = "Text color for screened comments";
|
|
}
|
|
|
|
|
|
property Color col_entry_link {
|
|
des = "Link color in entries";
|
|
}
|
|
property Color col_entry_vlink {
|
|
des = "Visited link color in entries";
|
|
}
|
|
|
|
property Color col_sidebar_link {
|
|
des = "Link color in sidebar";
|
|
}
|
|
property Color col_sidebar_vlink {
|
|
des = "Visited link color in sidebar";
|
|
}
|
|
|
|
property string img_delete { noui = 1; }
|
|
property string img_screen { noui = 1; }
|
|
property string img_unscreen { noui = 1; }
|
|
property string img_freeze { noui = 1; }
|
|
property string img_unfreeze { noui = 1; }
|
|
}
|
|
|
|
set col_weaker_fg = "#000000";
|
|
set col_weak_fg = "#ffffff";
|
|
set col_neutral_fg = "#550301";
|
|
set col_strong_fg = "#5b4b26";
|
|
set col_stronger_fg = "#5b4b26";
|
|
set col_cmtbarone_fg = "#ffffff";
|
|
set col_cmtbartwo_fg = "#ffffff";
|
|
set col_cmtbarscrn_fg = "#ffffff";
|
|
set col_sidebar_link = "#000000";
|
|
set col_entry_link = "#000000";
|
|
set col_entry_vlink = "#000000";
|
|
set col_sidebar_vlink = "#000000";
|
|
|
|
propgroup backgrounds = "Backgrounds";
|
|
propgroup backgrounds {
|
|
property Color col_weaker_bg {
|
|
des = "Default background color for the page";
|
|
}
|
|
property Color col_weak_bg {
|
|
des = "Background color on content areas";
|
|
}
|
|
property Color col_stronger_bg {
|
|
des = "Background color on headers";
|
|
}
|
|
property Color col_strong_bg {
|
|
des = "Background color on menus";
|
|
}
|
|
property Color col_neutral_bg {
|
|
des = "Background color on titles";
|
|
}
|
|
property Color col_entry_bg {
|
|
des = "Background color on entries";
|
|
}
|
|
property Color col_border {
|
|
des = "Color for content area borders";
|
|
note = "Content areas affected include sidebar boxes and the mini calendar.";
|
|
}
|
|
property string background_image
|
|
{
|
|
des = "Background image";
|
|
note = "URL to an image to be used for the page background (leave blank for none). Page texture won't be used if an image is defined.";
|
|
}
|
|
property string background_repeat {
|
|
des = "Background image repeat";
|
|
note = "This does not affect whether your background scrolls with the page. That option is coming up next.";
|
|
values = "repeat|Repeat|no-repeat|Don't repeat|repeat-x|Repeat across only|repeat-y|Repeat down only";
|
|
}
|
|
property string background_attachment {
|
|
des = "Should the background image scroll with the page?";
|
|
values = "scroll|Yes|fixed|No";
|
|
}
|
|
property string background_position {
|
|
des = "Background image position";
|
|
note = "Does not apply if background image is repeating in both directions.";
|
|
values = "center|Center|center left|Center-left|center right|Center-right|top|Top|top left|Top-left|top right|Top-right|bottom|Bottom|bottom left|Bottom-left|bottom right|Bottom-right|left|Left|right|Right";
|
|
}
|
|
set background_image = "";
|
|
set background_repeat = "repeat";
|
|
set background_position = "center";
|
|
set background_attachment = "scroll";
|
|
|
|
property string pres_txtr_bg {
|
|
des = "Texture to use for page background";
|
|
note = "Won't be used if a background image is defined above.";
|
|
values = "none|None|brushed_metal.png|Brushed Metal|burlap.png|Burlap|camouflage.png|Camouflage|canvas.png|Canvas|chalk.png|Chalk|cork.png|Cork|fibers.png|Fibers|floral.png|Floral|ice.png|Ice|manila.png|Manila|marble.png|Marble|paper.png|Paper|ridge.png|Ridge|rough.png|Rough|stucco.png|Stucco|terracotta.png|Terracotta|type.png|Type|wavy.png|Wavy";
|
|
}
|
|
property string pres_txtr_h {
|
|
des = "Texture to use for page header";
|
|
values = "none|None|brushed_metal.png|Brushed Metal|burlap.png|Burlap|camouflage.png|Camouflage|canvas.png|Canvas|chalk.png|Chalk|cork.png|Cork|fibers.png|Fibers|floral.png|Floral|ice.png|Ice|manila.png|Manila|marble.png|Marble|paper.png|Paper|ridge.png|Ridge|rough.png|Rough|stucco.png|Stucco|terracotta.png|Terracotta|type.png|Type|wavy.png|Wavy";
|
|
}
|
|
property string pres_txtr_c {
|
|
des = "Texture to use for main content areas";
|
|
values = "none|None|brushed_metal.png|Brushed Metal|burlap.png|Burlap|camouflage.png|Camouflage|canvas.png|Canvas|chalk.png|Chalk|cork.png|Cork|fibers.png|Fibers|floral.png|Floral|ice.png|Ice|manila.png|Manila|marble.png|Marble|paper.png|Paper|ridge.png|Ridge|rough.png|Rough|stucco.png|Stucco|terracotta.png|Terracotta|type.png|Type|wavy.png|Wavy";
|
|
}
|
|
property Color col_cmtbarone_bg {
|
|
des = "Background color for comment bars";
|
|
}
|
|
property Color col_cmtbartwo_bg {
|
|
des = "Background color for alternating comment bars";
|
|
}
|
|
property Color col_cmtbarscrn_bg {
|
|
des = "Background color for screened comment bars";
|
|
}
|
|
}
|
|
|
|
|
|
set col_weaker_bg = "#effe8f";
|
|
set col_weak_bg = "#5b4b26";
|
|
set col_neutral_bg = "#000000";
|
|
set col_strong_bg = "#fbe46a";
|
|
set col_stronger_bg = "#fbe46a";
|
|
set col_cmtbarone_bg = "#e2c956";
|
|
set col_cmtbartwo_bg = "#afb13e";
|
|
set col_cmtbarscrn_bg = "#fcda3e";
|
|
set col_entry_bg = "#977e3b";
|
|
set col_border = "#000000";
|
|
|
|
propgroup fonts {
|
|
property string main_font {
|
|
des = "Preferred Font";
|
|
maxlength = 25;
|
|
size = 10;
|
|
example = "Arial";
|
|
note = "Leave blank for your browser's default font";
|
|
}
|
|
property string main_font_fallback {
|
|
des = "Alternative font style";
|
|
values = "sans-serif|Sans-serif|serif|Serif|cursive|Cursive|monospace|Monospaced|none|Use browser's default";
|
|
note = "This general style will serve as a fallback if your preferred font is unavailable.";
|
|
}
|
|
|
|
property string header_font
|
|
{
|
|
des = "Font for the top header box";
|
|
maxlength = 25;
|
|
size = 10;
|
|
example = "Arial";
|
|
note = "Leave blank for your browser's default font";
|
|
}
|
|
property string header_font_fallback
|
|
{
|
|
des = "Alternative font style";
|
|
values = "sans-serif|Sans-serif|serif|Serif|cursive|Cursive|monospace|Monospaced|none|Use browser's default";
|
|
note = "This general style will serve as a fallback if your preferred font is unavailable.";
|
|
}
|
|
property string header_font_size { noui = 1; }
|
|
|
|
property string content_font
|
|
{
|
|
des = "Font for the content boxes";
|
|
maxlength = 25;
|
|
size = 10;
|
|
example = "Arial";
|
|
note = "Leave blank for your browser's default font";
|
|
}
|
|
property string content_font_fallback { noui = 1; }
|
|
|
|
property string subheading_font
|
|
{
|
|
des = "Font for subheadings";
|
|
maxlength = 25;
|
|
size = 10;
|
|
example = "Arial";
|
|
note = "Leave blank for your browser's default font";
|
|
}
|
|
property string subheading_font_fallback { noui = 1; }
|
|
|
|
property string entryheading_font
|
|
{
|
|
des = "Font for entry headings";
|
|
maxlength = 25;
|
|
size = 10;
|
|
example = "Arial";
|
|
note = "Leave blank for your browser's default font";
|
|
}
|
|
property string entryheading_font_fallback { noui = 1; }
|
|
}
|
|
|
|
set main_font = "Georgia";
|
|
set main_font_fallback = "serif";
|
|
set header_font = "Georgia";
|
|
set header_font_fallback = "serif";
|
|
set header_font_size = "2em";
|
|
set content_font = "Georgia";
|
|
set content_font_fallback = "sans-serif";
|
|
set subheading_font = "Arial";
|
|
set subheading_font_fallback = "sans-serif";
|
|
set entryheading_font = "Georgia";
|
|
set entryheading_font_fallback = "sans-serif";
|
|
|
|
propgroup pres = "Presentation";
|
|
propgroup pres {
|
|
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 pres_show_entry_list {
|
|
des = "Show links to entries on page?";
|
|
}
|
|
property string pres_page_width {
|
|
des = "Page Width";
|
|
note = "The width of the total page content, including the sidebar.";
|
|
values = "90%|90%|80%|80%|70%|70%|60%|60%|50%|50%|40%|40%";
|
|
}
|
|
property string pres_page_align {
|
|
des = "Page Alignment";
|
|
values = "left|Left|center|Center|right|Right";
|
|
}
|
|
property string pres_sidebar_width {
|
|
des = "Sidebar Width";
|
|
note = "How much of the page width is taken up by the sidebar.";
|
|
values = "30%|30%|25%|25%|20%|20%|15%|15%";
|
|
}
|
|
property string pres_sidebar_align {
|
|
des = "Which side of the page should the sidebar show up on?";
|
|
values = "left|Left|right|Right";
|
|
}
|
|
property string header_image {
|
|
des = "URL of image to be used as page header";
|
|
example = "http://example.com/your_image.jpg";
|
|
}
|
|
property bool pres_show_cal {
|
|
des = "Show calendar strip on journal pages?";
|
|
}
|
|
property bool show_entry_userpic {
|
|
des = "Show entry-specific userpic next to each entry?";
|
|
}
|
|
property bool pres_use_gradients {
|
|
des = "Use gradients when displaying entry headers and sidebar boxes?";
|
|
}
|
|
property use comment_userpic_style;
|
|
property use use_shared_pic;
|
|
property use page_recent_items;
|
|
property use page_friends_items;
|
|
}
|
|
set show_entry_userpic = true;
|
|
set pres_show_cal = true;
|
|
set pres_sidebar_align = "left";
|
|
set pres_show_entry_list = true;
|
|
set pres_page_width = "80%";
|
|
set pres_sidebar_width = "20%";
|
|
set pres_txtr_bg = "none";
|
|
set pres_txtr_h = "none";
|
|
set pres_txtr_c = "none";
|
|
set pres_page_align = "center";
|
|
set summary_items = 100;
|
|
set pres_use_gradients = true;
|
|
|
|
propgroup text {
|
|
property string text_date_format {
|
|
des = "Date format:";
|
|
example = "%%yyyy%%.%%mm%%.%%dd%%";
|
|
}
|
|
property string text_time_format {
|
|
des = "Time format:";
|
|
example = "%%HH%%:%%min%%";
|
|
}
|
|
property string text_navigation {
|
|
des = "Navigation menu title";
|
|
}
|
|
property string text_navigation_extra {
|
|
des = "Page-specific navigation menu title";
|
|
example = "This page";
|
|
}
|
|
property string page_summary_title {
|
|
des = "Page Summary menu title";
|
|
}
|
|
property string text_entry_plural {
|
|
des = "Text to describe entries in month view";
|
|
format = "plurals";
|
|
example = "1 entry // # entries";
|
|
}
|
|
|
|
property use text_nosubject;
|
|
property use text_meta_mood;
|
|
property use text_meta_music;
|
|
property use text_noentries_day;
|
|
property use text_max_comments;
|
|
property string text_comment_from {
|
|
des = "Text to indicate when comment was posted";
|
|
example = "at";
|
|
maxlength = "20";
|
|
}
|
|
property use text_comment_date;
|
|
property use text_comment_ipaddr;
|
|
property use text_comment_frozen;
|
|
property use text_reply_nocomments_header;
|
|
property use text_reply_nocomments;
|
|
}
|
|
propgroup linktext = "Link text";
|
|
propgroup linktext {
|
|
property string text_view_memories {
|
|
des = "View memories";
|
|
}
|
|
property string text_add_mem {
|
|
des = "Add to memories";
|
|
}
|
|
property string text_edit_entry {
|
|
des = "Edit entry";
|
|
}
|
|
property string text_edit_tags {
|
|
des = "Edit tags";
|
|
}
|
|
property use text_view_recent;
|
|
property use text_view_friends;
|
|
property use text_view_archive;
|
|
property use text_view_userinfo;
|
|
property use text_permalink;
|
|
property use text_post_comment;
|
|
property use text_read_comments;
|
|
property use text_post_comment_friends;
|
|
property use text_read_comments_friends;
|
|
property use text_reply_back;
|
|
property use text_comment_reply;
|
|
property use text_comment_parent;
|
|
property use text_comment_thread;
|
|
property string text_link_separator {
|
|
des = "Text or image to separate links with";
|
|
note = "If you use a URL of an image (starting with 'http://'), Nebula will use the image as a separator. It helps to use a small image for this purpose, and your image might break if the URL contains any spaces.";
|
|
example = " |  or http://www.example.com/your_image.jpg";
|
|
}
|
|
|
|
}
|
|
set text_date_format = "%%yyyy%%.%%mm%%.%%dd%%";
|
|
set text_time_format = "%%HH%%:%%min%%";
|
|
set text_view_memories = "Memories";
|
|
set text_add_mem = "Add to Memories";
|
|
set page_summary_title = "Summary";
|
|
set text_entry_plural = "1 entry // # entries";
|
|
set text_edit_entry = "Edit";
|
|
set text_edit_tags = "Tags";
|
|
set tags_aware = true;
|
|
set text_link_separator = " ";
|
|
set text_navigation = "Navigation";
|
|
set text_navigation_extra = "This page";
|
|
set text_comment_from = "";
|
|
set text_comment_date = "at";
|
|
|
|
|
|
## -- p r o p e r t y h a n d l e r s -- ##################################
|
|
|
|
function prop_init () {
|
|
var int entry_lightness = $*col_weaker_bg->lightness();
|
|
var Color col_entry_bg_tint = $entry_lightness > 120 ? $*col_weaker_bg->lighter(): $*col_weaker_fg;
|
|
|
|
# these shouldn't be limited to a The Boxer subfolder
|
|
$*img_delete = palimg_tint("boxer/delete.gif", $col_entry_bg_tint);
|
|
$*img_screen = palimg_tint("boxer/screen.gif", $col_entry_bg_tint);
|
|
$*img_unscreen = palimg_tint("boxer/unscreen.gif", $col_entry_bg_tint);
|
|
$*img_freeze = palimg_tint("boxer/freeze.gif", $col_entry_bg_tint);
|
|
$*img_unfreeze = palimg_tint("boxer/unfreeze.gif", $col_entry_bg_tint);
|
|
|
|
# textures! lovely textures.
|
|
if ($*pres_txtr_bg != "none") { $*pres_txtr_bg = palimg_tint("textures/$*pres_txtr_bg", $*col_stronger_fg, $*col_weaker_bg); }
|
|
|
|
var Color hfg = "#ffffff";
|
|
if ($*pres_txtr_h != "none") { $*pres_txtr_h = palimg_tint("textures/$*pres_txtr_h", $hfg, $*col_stronger_bg); }
|
|
|
|
if ($*pres_txtr_c != "none") { $*pres_txtr_c = palimg_tint("textures/$*pres_txtr_c", $*col_weaker_fg, $*col_weak_bg); }
|
|
|
|
}
|
|
|
|
|
|
## -- s t y l e s h e e t f u n c t i o n s -- ############################
|
|
|
|
function appended_to_stylesheet() {
|
|
# This function intentionally left blank. Override in user layer.
|
|
}
|
|
|
|
function print_stylesheet () {
|
|
|
|
var string pres_sidebar_boxbg;
|
|
var string pres_minical_boxbg;
|
|
var string pres_page_margins;
|
|
|
|
# figure out the shade applied to weekends on the MiniCal
|
|
var int minical_lightness = $*col_strong_bg->lightness();
|
|
var Color col_minical_weekend = $minical_lightness > 120 ? $*col_strong_bg->darker(50) : $*col_strong_bg->lighter(50);
|
|
|
|
# figuring out the widths and margins the ghetto way
|
|
var int width_page = int($*pres_page_width);
|
|
var int width_sidebar = int($*pres_sidebar_width);
|
|
var int width_content = $width_page - $width_sidebar - 5;
|
|
var int width_margin = 100 - $width_page;
|
|
|
|
if ($*pres_page_align == "center") {
|
|
var string str_width_margin = string($width_margin / 2);
|
|
$pres_page_margins = "margin-left: $str_width_margin%;";
|
|
} else {
|
|
var string str_width_margin = string($width_margin);
|
|
$pres_page_margins = "margin-$*pres_page_align: $str_width_margin%;";
|
|
}
|
|
var string pres_content_width = string($width_content) + "%";
|
|
|
|
# death to IE
|
|
var string pres_sidebar_width_ie = string($width_sidebar - 3) + "%";
|
|
var string pres_content_width_ie = string($width_content - 3) + "%";
|
|
|
|
# another ghetto method to align the sidebar properly
|
|
var string pres_sidebar_opp = $*pres_sidebar_align == "left" ? "right" : "left";
|
|
|
|
|
|
# gradients! lovely gradients.
|
|
if ($*pres_use_gradients) {
|
|
var Color col_black = "#000000";
|
|
var Color col_white = "#ffffff";
|
|
# Let's determine some colours first
|
|
var int tmp_boxborder_lightness = $*col_border->lightness();
|
|
var Color tmp_boxborder_avg = $tmp_boxborder_lightness > 120 ? $*col_border->darker(70) : $*col_border->lighter(70);
|
|
var string tmp_gstart = $tmp_boxborder_avg.as_string->substr(1, 6);
|
|
var string tmp_gend = $*col_strong_bg.as_string->substr(1, 6);
|
|
|
|
# Now to generate the gradients
|
|
$pres_sidebar_boxbg = "background: url($*PALIMGROOT/shadow/t.gif/pt$tmp_gstart$tmp_gend) repeat-x;";
|
|
$pres_minical_boxbg = "background: $*col_strong_bg url($*PALIMGROOT/shadow/b.gif/pt$tmp_gstart$tmp_gend) repeat-x scroll bottom;";
|
|
} else {
|
|
$pres_minical_boxbg = "background-color: $*col_strong_bg;";
|
|
}
|
|
|
|
|
|
"""
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
font-family: $*main_font, $*main_font_fallback;
|
|
font-size: 0.75em;
|
|
""";
|
|
if (clean_url($*background_image) != "") {
|
|
""" background-image: url('$*background_image');
|
|
background-position: $*background_position;
|
|
background-repeat: $*background_repeat;
|
|
background-attachment: $*background_attachment;
|
|
""";
|
|
} elseif ($*pres_txtr_bg != "none") { """ background: url($*pres_txtr_bg);"""; }
|
|
"""
|
|
background-color: $*col_weaker_bg;
|
|
color: $*col_weaker_fg;
|
|
}
|
|
#mainContainer {
|
|
width: $*pres_page_width;
|
|
$pres_page_margins
|
|
min-width: 300px;
|
|
}
|
|
#header {
|
|
padding: 0 1em;
|
|
min-height: 110px;
|
|
margin: 0 0 10px 0;
|
|
""";
|
|
if ($*pres_txtr_h != "none") { """ background: url($*pres_txtr_h);"""; }
|
|
"""
|
|
background-color: $*col_stronger_bg;
|
|
color: $*col_stronger_fg;
|
|
}
|
|
#header h1 {
|
|
margin: 0 0 -10px 0;
|
|
padding: 15px 0;
|
|
}
|
|
#header a {
|
|
font-family: $*header_font, $*header_font_fallback;
|
|
font-size: $*header_font_size;
|
|
text-decoration: none;
|
|
color: $*col_stronger_fg;
|
|
}
|
|
#header p {
|
|
color: $*col_neutral_fg;
|
|
font-size: 18px;
|
|
font-style: italic;
|
|
margin: 0 0 0 20px;
|
|
}
|
|
#content {
|
|
float: $pres_sidebar_opp;
|
|
background-color: $*col_weak_bg;
|
|
color: $*col_weak_fg;
|
|
padding: 5px;
|
|
margin: 20px 1% 20px 1%;
|
|
""";
|
|
if ($*pres_txtr_c != "none") { """ background: url($*pres_txtr_c);"""; }
|
|
"""
|
|
width: $pres_content_width;
|
|
voice-family: "\"}\"";
|
|
voice-family:inherit;
|
|
width: $pres_content_width_ie;
|
|
}
|
|
html>body #content {
|
|
width: $pres_content_width_ie;
|
|
}
|
|
#content p {
|
|
margin-top: 0px;
|
|
margin-bottom: 0px;
|
|
padding: 8px;
|
|
}
|
|
#sideBar {
|
|
float: $*pres_sidebar_align;
|
|
padding: 5px;
|
|
margin: 20px 1% 20px 1%;
|
|
background-color: $*col_weak_bg;
|
|
color: $*col_weak_fg;
|
|
""";
|
|
if ($*pres_txtr_c != "none") { """background: url($*pres_txtr_c);"""; }
|
|
"""
|
|
width: $*pres_sidebar_width;
|
|
voice-family: "\"}\"";
|
|
voice-family:inherit;
|
|
width: $pres_sidebar_width_ie;
|
|
}
|
|
html>body #sideBar {
|
|
width: $pres_sidebar_width_ie;
|
|
}
|
|
#sideBarHeader {
|
|
min-height: 100px;
|
|
background-color: $*col_stronger_bg;
|
|
color: $*col_stronger_fg;
|
|
""";
|
|
if ($*pres_txtr_h != "none") { """background: url($*pres_txtr_h);"""; }
|
|
"""
|
|
vertical-align: bottom;
|
|
margin-bottom: 10px;
|
|
}
|
|
#sideBar h4 {
|
|
color: $*col_neutral_fg;
|
|
text-transform: uppercase;
|
|
font-weight: normal;
|
|
font-family: $*subheading_font, $*subheading_font_fallback;
|
|
display: block;
|
|
text-align: center;
|
|
padding: 5px;
|
|
padding-bottom: 0;
|
|
$pres_sidebar_boxbg
|
|
}
|
|
#sideBar ul {
|
|
margin: 0 0 1em 1em;
|
|
padding: 0;
|
|
list-style-type: none;
|
|
}
|
|
.sideBarBox {
|
|
border: 2px solid $*col_border;
|
|
margin-bottom: 5px;
|
|
background-color: $*col_strong_bg;
|
|
color: $*col_strong_fg;
|
|
}
|
|
.sideBarBox a, .sideBarBox a:active {
|
|
color: $*col_sidebar_link;
|
|
}
|
|
.sideBarBox a:visited {
|
|
color: $*col_sidebar_vlink;
|
|
}
|
|
.sideBarBox h5 {
|
|
font-family: $*subheading_font, $*subheading_font_fallback;
|
|
margin: 10px 0 0 0;
|
|
}
|
|
.sideBarUpi {
|
|
margin: 0;
|
|
padding: 2px;
|
|
}
|
|
|
|
.entry {
|
|
padding: 5px;
|
|
background-color: $*col_entry_bg;
|
|
font-family: $*content_font, $*content_font_fallback;
|
|
}
|
|
.entry a {
|
|
color: $*col_entry_link;
|
|
}
|
|
.entry a:visited {
|
|
color: $*col_entry_vlink;
|
|
}
|
|
.entry h3 {
|
|
font-family: $*entryheading_font, $*entryheading_font_fallback;
|
|
font-size: 1.5em;
|
|
padding: 3px;
|
|
margin: 10px 0;
|
|
}
|
|
.entryBar {
|
|
clear: both;
|
|
overflow: auto;
|
|
font-size: 0.9em;
|
|
}
|
|
.entryText {
|
|
margin-top: 5px;
|
|
margin-bottom: 5px;
|
|
}
|
|
.entryFooter {
|
|
padding-top: 1em;
|
|
}
|
|
.commentsInfo {
|
|
float: right;
|
|
}
|
|
form#postform textarea {
|
|
width: 100%; max-width: 99%;
|
|
}
|
|
form#postform input {
|
|
max-width: 100%;
|
|
}
|
|
|
|
.commentBoxOne {
|
|
border: 5px solid $*col_cmtbarone_bg;
|
|
}
|
|
.commentBoxTwo {
|
|
border: 5px solid $*col_cmtbartwo_bg;
|
|
}
|
|
.commentBoxScreened {
|
|
border: 5px solid $*col_cmtbarscrn_bg;
|
|
}
|
|
.commentBoxOne .commentInfo {
|
|
background-color: $*col_cmtbarone_bg;
|
|
color: $*col_cmtbarone_fg;
|
|
}
|
|
.commentBoxTwo .commentInfo {
|
|
background-color: $*col_cmtbartwo_bg;
|
|
color: $*col_cmtbartwo_fg;
|
|
}
|
|
.commentBoxScreened .commentInfo {
|
|
background-color: $*col_cmtbarscrn_bg;
|
|
color: $*col_cmtbarscrn_fg;
|
|
}
|
|
.commentBoxOne, .commentBoxTwo, .commentBoxScreened {
|
|
background-color: $*col_weak_bg;
|
|
color: $*col_weak_fg;
|
|
border-right: none;
|
|
border-bottom: none;
|
|
width: 99%;
|
|
}
|
|
.commentBoxOne a, .commentBoxTwo a, .commentBoxScreened a {
|
|
color: $*col_entry_link;
|
|
}
|
|
.commentBoxOne a:visited, .commentBoxTwo a:visited, .commentBoxScreened a:visited {
|
|
color: $*col_entry_vlink;
|
|
}
|
|
.commentUpi {
|
|
float: left;
|
|
margin-right: 10px;
|
|
margin-bottom: 10px;
|
|
}
|
|
.commentUpi img {
|
|
border: 0;
|
|
}
|
|
.commentInfo {
|
|
width: 100%;
|
|
vertical-align: bottom;
|
|
padding-botttom: 5px;
|
|
background-color: #ccf;
|
|
}
|
|
.commentButs {
|
|
vertical-align: bottom;
|
|
text-align: right;
|
|
}
|
|
.commentText {
|
|
padding-top: 5px;
|
|
padding-left: 5px;
|
|
}
|
|
.commentLinks {
|
|
clear: both;
|
|
margin-left: 5px;
|
|
}
|
|
|
|
#footer {
|
|
float: left;
|
|
width: """+$pres_content_width+"""px;
|
|
font-size: 0.8em;
|
|
margin-top: 10px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
h2, h3, h4 {
|
|
margin-top: 0;
|
|
}
|
|
a {
|
|
color: $*col_entry_link;
|
|
text-decoration: none;
|
|
}
|
|
a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
a:visited {
|
|
color: $*col_entry_vlink;
|
|
}
|
|
.userpic {
|
|
float: right;
|
|
margin-left: 5px;
|
|
margin-bottom: 5px;
|
|
}
|
|
div.entrysub h3 {
|
|
margin: 0;
|
|
}
|
|
div.MiniCalContainer {
|
|
border: 2px solid $*col_border;
|
|
width: 98%;
|
|
height: 3em;
|
|
overflow: auto;
|
|
margin-top: 10px;
|
|
margin-left: 1%;
|
|
$pres_minical_boxbg
|
|
}
|
|
.MiniCalDayPosts {
|
|
font-weight: bold;
|
|
}
|
|
td.MiniCalWeekend {
|
|
background-color: $col_minical_weekend;
|
|
}
|
|
td.MiniCalDay, td.MiniCalDayPosts {
|
|
font-family: Trebuchet, Verdana, sans-serif;
|
|
font-size: 0.95em;
|
|
color: $*col_strong_fg;
|
|
}
|
|
.MiniCalDay a, .MiniCalDay a:active, .MiniCalDayPosts a, .MiniCalDayPosts a:active {
|
|
color: $*col_sidebar_link;
|
|
}
|
|
.MiniCalDay a:visited, .MiniCalDayPosts a:visited {
|
|
color: $*col_sidebar_vlink;
|
|
}
|
|
.monthWrapper {
|
|
display: table;
|
|
border: 1px solid black;
|
|
width: 100%;
|
|
}
|
|
.monthRow {
|
|
display: table-row;
|
|
border: 1px solid black;
|
|
}
|
|
.monthCell, .monthDay {
|
|
display: table-cell;
|
|
border: 1px solid black;
|
|
padding: 3px;
|
|
}
|
|
.monthDay {
|
|
font-family: $*subheading_font, $*subheading_font_fallback;
|
|
font-size: 2em;
|
|
text-align: right;
|
|
}
|
|
#cal a {
|
|
text-decoration: none;
|
|
color: $*col_entry_link;
|
|
}
|
|
.calrow {
|
|
clear: both;
|
|
font-family: Arial, sans-serif;
|
|
}
|
|
|
|
.calempty {
|
|
width: 24px;
|
|
font-size: 11px;
|
|
margin: 1px;
|
|
float: left;
|
|
}
|
|
.calactitem {
|
|
float: left;
|
|
margin: 1px;
|
|
width: 23px;
|
|
font-size: 11px;
|
|
text-align: center;
|
|
background-color: white;
|
|
border-right: 1px solid black;
|
|
border-bottom: 1px solid black;
|
|
}
|
|
.calDayEntries {
|
|
font-size: 1.5em;
|
|
font-weight: bold;
|
|
}
|
|
.calDay, .calDayEntries, .bigday {
|
|
font-family: $*subheading_font, $*subheading_font_fallback;
|
|
text-align: center;
|
|
vertical-align: middle;
|
|
}
|
|
.bigday {
|
|
font-weight: bold;
|
|
}
|
|
.cal td {
|
|
padding: 3px;
|
|
}
|
|
.calinitem {
|
|
float: left;
|
|
margin: 1px;
|
|
width: 23px;
|
|
font-size: 11px;
|
|
text-align: center;
|
|
border-right: 1px solid black;
|
|
border-bottom: 1px solid black;
|
|
}
|
|
|
|
""";
|
|
appended_to_stylesheet();
|
|
}
|
|
|
|
|
|
## -- i m a g e l i n k s e p a r a t o r -- ############################
|
|
|
|
function separator() : string {
|
|
# Would do this in prop_init, except you can't use HTML in
|
|
# $* variables. Poo.
|
|
if ($*text_link_separator->starts_with("http://")) {
|
|
return " <img src=\"$*text_link_separator\" align=\"absmiddle\" alt=\" | \" /> ";
|
|
} else {
|
|
return $*text_link_separator;
|
|
}
|
|
}
|
|
|
|
## -- p r i n t l i n k l i s t -- ########################################
|
|
|
|
function linklist() : string {
|
|
var string return = "";
|
|
var Page p = get_page();
|
|
if (size $p.linklist <= 0) {
|
|
return "";
|
|
}
|
|
var bool section_open = false;
|
|
$return = $return + " <hr />\n";
|
|
var int count = 0;
|
|
foreach var UserLink l ($p.linklist) {
|
|
$count = $count + 1;
|
|
if ($l.title) {
|
|
if ($l.is_heading) {
|
|
if ($section_open) {
|
|
$return = $return + " </ul>\n </div>\n";
|
|
}
|
|
$return = $return + """ <div class="sideBarBox">\n <h4>$l.title</h4>\n <ul>\n""";
|
|
$section_open = true;
|
|
} else {
|
|
if ($count == 1) {
|
|
$return = $return + """ <div class="sideBarBox">\n <h4 style="margin-bottom: 0;"> </h4>\n <ul>\n""";
|
|
}
|
|
$return = $return + """ <li><a href="$l.url">$l.title</a></li>\n""";
|
|
}
|
|
}
|
|
}
|
|
$return = $return + " </ul>\n </div>\n";
|
|
return $return;
|
|
}
|
|
|
|
|
|
## -- p a g e s u m m a r i e s -- ########################################
|
|
|
|
function num_comments_in_thread (Comment[] comments) : int {
|
|
var int total = 0;
|
|
foreach var Comment c ($comments) {
|
|
$total = $total + 1;
|
|
if (size $c.replies > 0) {
|
|
$total = $total + num_comments_in_thread($c.replies);
|
|
}
|
|
}
|
|
return $total;
|
|
}
|
|
|
|
function Page::lay_entry_nav (Entry e) : string {
|
|
|
|
var string date = $e.time->date_format($*text_date_format);
|
|
var string time = $e.time->time_format($*text_time_format);
|
|
var string line;
|
|
var string subject = ($e.subject != "") ? " $e.subject" : """ <i class="nosubject">$*text_nosubject</i>""";
|
|
var string j = ($.view == "friends" and $e.journal.username != $e.poster.username) ? " in $e.journal: " : "";
|
|
var string item = ($.view == "friends" or $e.journal.username != $e.poster.username) ? "<h5>$date @ $time</h5>" + $e.poster->as_string() + "$j <a href=\"#" + $e.itemid + "\">" : "<h5>$date @ $time</h5><a href=\"#" + $e.itemid + "\">";
|
|
$line = """ <li>$item $subject</a></li>\n""";
|
|
|
|
return $line;
|
|
}
|
|
|
|
function Page::lay_print_summary () { }
|
|
|
|
function RecentPage::lay_print_summary () {
|
|
var int count = $*summary_items;
|
|
if ($count == 0) { return; }
|
|
|
|
var string text;
|
|
foreach var Entry e ($.entries) {
|
|
if($count > 0) {
|
|
$text = $text + $this->lay_entry_nav($e);
|
|
}
|
|
$count = $count - 1;
|
|
}
|
|
if($text != "") {
|
|
if($count < 0) {
|
|
$count = $count * -1;
|
|
$text = $text + """ <li><strong>+$count more</strong></li>\n""";
|
|
}
|
|
print $text;
|
|
}
|
|
}
|
|
|
|
function EntryPage::lay_print_summary () {
|
|
var int count = $*summary_items;
|
|
if($count == 0) { return; }
|
|
|
|
var string text;
|
|
$text = $this->lay_entry_nav($.entry);
|
|
$count = $count - 1;
|
|
|
|
foreach var Comment c ($.comments) {
|
|
if($count > 0) {
|
|
var string subject = ($c.subject != "") ? $c.subject : """<i class="nosubject">$*text_nosubject</i> """;
|
|
$text = $text + """ <li>$c.poster: <a href="#$c.anchor">$subject</a>""";
|
|
var int num = num_comments_in_thread($c.replies);
|
|
if($num > 0) {
|
|
$text = $text + " [+" + string($num) + "] ";
|
|
}
|
|
$text = $text + """</li>\n""";
|
|
}
|
|
$count = $count - 1;
|
|
}
|
|
|
|
if($text != "") {
|
|
if($count < 0) {
|
|
$count = $count * -1;
|
|
$text = $text + """ <li><strong>+$count more</strong></li>\n""";
|
|
}
|
|
if($count != ($*summary_items - 1)) {
|
|
print $text;
|
|
}
|
|
}
|
|
}
|
|
|
|
function DayPage::lay_print_summary () {
|
|
var int count = $*summary_items;
|
|
if($count == 0) { return; }
|
|
|
|
var string text;
|
|
foreach var Entry e ($.entries) {
|
|
$text = $text + $this->lay_entry_nav($e);
|
|
}
|
|
|
|
if($text != "") {
|
|
if($count < 0) {
|
|
$count = $count * -1;
|
|
$text = $text + """ <li><strong>+$count more</strong></li>\n""";
|
|
}
|
|
print $text;
|
|
}
|
|
}
|
|
|
|
|
|
function MonthPage::lay_print_summary () {
|
|
var int count = $*summary_items;
|
|
if($count == 0) { return; }
|
|
|
|
var string entrytext = "1 entry // # entries";
|
|
var string text;
|
|
foreach var MonthDay d ($.days) {
|
|
if($count > 0) {
|
|
var string day = lang_ordinal($d.day);
|
|
if ($d.has_entries) {
|
|
var string entries = get_plural_phrase($d.num_entries, "text_entry_plural");
|
|
$text = $text + """ <li><a href="#anchor$d.day">$day [$entries]</a></li>\n""";
|
|
}
|
|
}
|
|
}
|
|
|
|
if($text != "") {
|
|
if($count < 0) {
|
|
$count = $count * -1;
|
|
$text = $text + """ <li><strong>+$count more</strong></li>""";
|
|
}
|
|
print $text;
|
|
}
|
|
}
|
|
|
|
|
|
## -- e x t r a n a v i g a t i o n l i n k s -- ########################
|
|
|
|
function Page::lay_nav_links() : string[] {
|
|
var string[] ret = [];
|
|
return $ret;
|
|
}
|
|
|
|
function RecentPage::lay_nav_links() : string[] {
|
|
var string[] ret = []; var int i = 0;
|
|
if (viewer_is_owner()) {
|
|
$ret[$i] = """<a href="$*SITEROOT/update.bml">Update Journal</a>"""; $i++;
|
|
}
|
|
if ($.nav.forward_url != "" or $.nav.backward_url != "") {
|
|
if ($.nav.backward_url != "") {
|
|
var string previous = get_plural_phrase($.nav.backward_count, "text_skiplinks_back");
|
|
$ret[$i] = """<a href="$.nav.backward_url">$previous</a>"""; $i++;
|
|
}
|
|
if ($.nav.forward_url != "") {
|
|
var string next = get_plural_phrase($.nav.forward_count, "text_skiplinks_forward");
|
|
$ret[$i] = """<a href="$.nav.forward_url">$next</a>"""; $i++;
|
|
}
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
function EntryPage::lay_nav_links() : string[] {
|
|
var string[] ret; var int i = 0;
|
|
var Link prev = $.entry->get_link("nav_prev");
|
|
var Link next = $.entry->get_link("nav_next");
|
|
|
|
if ($prev.url != "" or $next.url != "") {
|
|
if ($prev.url != "") {
|
|
$ret[$i] = """<a href="$prev.url">$prev.caption</a>"""; $i++;
|
|
}
|
|
if ($next.url != "") {
|
|
$ret[$i] = """<a href="$next.url">$next.caption</a>""";
|
|
}
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
function YearPage::lay_nav_links() : string[] {
|
|
var string[] ret; var int i = 0;
|
|
foreach var YearYear y ($.years) {
|
|
if ($y.displayed) {
|
|
$ret[$i] = """<strong>$y.year</strong>\n""";
|
|
} else {
|
|
$ret[$i] = """<a href="$y.url">$y.year</a>\n""";
|
|
}
|
|
$i++;
|
|
}
|
|
return $ret;
|
|
}
|
|
|
|
function MonthPage::lay_nav_links() : string[] {
|
|
var string[] ret = []; var int i;
|
|
var string links = "";
|
|
if ($.prev_url != "") { $ret[$i] = """<a href="$.prev_url">"""+$.prev_date->date_format($*lang_fmt_month_long)+"""</a>"""; $i++; }
|
|
if ($.next_url != "") { $ret[$i] = """<a href="$.next_url">"""+$.next_date->date_format($*lang_fmt_month_long)+"""</a>"""; $i++; }
|
|
|
|
return $ret;
|
|
}
|
|
|
|
function DayPage::lay_nav_links() : string[] {
|
|
var string[] ret = [];
|
|
$ret[0] = """<a href="$.prev_url">$*text_day_prev</a>""";
|
|
$ret[1] = """<a href="$.next_url">$*text_day_next</a>""";
|
|
return $ret;
|
|
}
|
|
|
|
|
|
## -- p r i n t s i d e b a r -- ##########################################
|
|
|
|
function Page::lay_print_sidebar() {
|
|
var Page p = get_page();
|
|
|
|
var string userpic;
|
|
var Image up_img = $.journal.default_pic;
|
|
if (defined $up_img) {
|
|
$userpic = """ <div id="sideBarHeader">
|
|
<div class="sideBarUpi">
|
|
<center><img src="$up_img.url" class="sideBarUpi" alt="" height="$up_img.height" width="$up_img.width" /></center>
|
|
</div>
|
|
</div>
|
|
""";
|
|
}
|
|
var string website;
|
|
if ($.journal.website_url != "") {
|
|
$website = """<li><a href="$.journal.website_url">$.journal.website_name</a></li>\n""";
|
|
}
|
|
|
|
"""
|
|
<div id="sideBar">
|
|
$userpic
|
|
<div class="sideBarBox">
|
|
<h4>$*text_navigation</h4>
|
|
<ul>\n""";
|
|
var string views;
|
|
foreach var string v ($.views_order) {
|
|
$views = $views + " <li";
|
|
if ($v == $.view or
|
|
($v == "archive" and $.view == "day") or
|
|
($v == "archive" and $.view == "month")) {
|
|
$views = $views + " id='active'";
|
|
} else {
|
|
$views = $views + " class='inactive'";
|
|
}
|
|
$views = $views + ">";
|
|
$views = $views + """<a href="$.view_url{$v}">""" + lang_viewname($v) + "</a>";
|
|
$views = $views + "</li>\n";
|
|
}
|
|
$views = $views + """ <li class="inactive"><a href="$*SITEROOT/tools/memories.bml?user=$p.journal.username">$*text_view_memories</a></li>\n""";
|
|
|
|
var string website_name = $.journal.website_name ? $.journal.website_name : $*text_website_default_name;
|
|
if ($.journal.website_url != "") {
|
|
$views = $views + """ <li class="inactive"><a href="$.journal.website_url">$website_name</a></li>\n""";
|
|
}
|
|
println """$views </ul>\n </div>\n""";
|
|
var string[] submenu = $this->lay_nav_links();
|
|
if (size $submenu > 0) {
|
|
" <div class=\"sideBarBox\">\n <h4>$*text_navigation_extra</h4>\n <ul>\n";
|
|
foreach var string subitem ($submenu) {
|
|
print """ <li>$subitem</li>\n""";
|
|
}
|
|
println " </ul>\n </div>\n\n";
|
|
}
|
|
if ( $*pres_show_entry_list and $p.view != "archive") {
|
|
" <div class=\"sideBarBox\">\n <h4>$*page_summary_title</h4>\n <ul>\n";
|
|
$p->lay_print_summary();
|
|
" </ul>\n </div>\n";
|
|
}
|
|
print linklist();
|
|
"""
|
|
<div class="sideBarBox" style="margin-bottom: 0;">
|
|
<h4 style="margin-bottom: 5px;"><a href="$*SITEROOT">$*SITENAMESHORT</a></h4>
|
|
</div>
|
|
</div>
|
|
""";
|
|
}
|
|
|
|
|
|
## -- p r i n t c a l e n d a r -- ########################################
|
|
|
|
function print_calendar() : string {
|
|
var string calendar = "";
|
|
var Page p = get_page();
|
|
var YearMonth m = $p->get_latest_month();
|
|
var string month = $m->month_format();
|
|
if($m.has_entries) {
|
|
$calendar = """
|
|
<div class="MiniCalContainer" align="center">
|
|
<table class="MiniCal">
|
|
<tr><td nowrap="nowrap" class="MiniCalDay" style="color: $*col_neutral_fg;"><i>$month</i> </td>
|
|
""";
|
|
var YearWeek[] theWeeks = $m.weeks;
|
|
foreach var YearWeek w ($theWeeks) {
|
|
var YearDay[] theDays = $w.days;
|
|
var int start = $w.pre_empty;
|
|
foreach var YearDay d ($theDays) {
|
|
$start = $start + 1;
|
|
$calendar = $calendar + "\n <td valign=\"top\" class=\"";
|
|
if ( $start == 1 or $start == 7 ) {
|
|
$calendar = $calendar + "MiniCalWeekend ";
|
|
}
|
|
if ($d.num_entries) {
|
|
$calendar = $calendar + """MiniCalDayPosts"><a href="$d.url">""" + $d.day->zeropad(2) + "</a></td>";
|
|
} else {
|
|
$calendar = $calendar + """MiniCalDay">""" + $d.day->zeropad(2) + "</td>";
|
|
}
|
|
}
|
|
}
|
|
$calendar = $calendar + "\n </tr>\n </table>\n </div>\n";
|
|
}
|
|
if ($calendar == "") {
|
|
return "Nothing to see here.";
|
|
}
|
|
return $calendar;
|
|
}
|
|
|
|
|
|
## -- p r i n t p a g e -- ################################################
|
|
|
|
function Page::print ()
|
|
{
|
|
var string title = $this->title();
|
|
var string headerimg = $*header_image ? "<img src='$*header_image' alt='' />" : "";
|
|
|
|
# HEAD
|
|
"""<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="" lang="">
|
|
<head>
|
|
<link rel='stylesheet' href='$.stylesheet_url' type='text/css'/>
|
|
|
|
""";
|
|
$this->print_head();
|
|
"""
|
|
|
|
<title>$title</title>
|
|
</head>
|
|
""";
|
|
|
|
# BODY
|
|
"""
|
|
<body>
|
|
<a name="top"></a>
|
|
<div id="mainContainer">
|
|
""";
|
|
if ($*pres_show_cal and $this.view != "friends") {
|
|
print print_calendar();
|
|
}
|
|
|
|
if ($*pres_sidebar_align == "left") {
|
|
$this->lay_print_sidebar();
|
|
}
|
|
"""
|
|
<!-- h e a d e r --------------------------------- -->
|
|
<div id="content">
|
|
|
|
<div id="header">
|
|
<div id="headerimg">$headerimg</div>
|
|
<div id="title">
|
|
<h1><a href="$.base_url">$.global_title</a></h1>
|
|
<p>$.global_subtitle</p>
|
|
</div>
|
|
</div>
|
|
|
|
""";
|
|
|
|
$this->print_body();
|
|
|
|
var string[] submenu = $this->lay_nav_links();
|
|
if (size $submenu > 0) {
|
|
"<div class=\"entry\" align=\"center\">";
|
|
foreach var string subitem ($submenu) {
|
|
print """$subitem """;
|
|
}
|
|
"</div>";
|
|
}
|
|
"</div>";
|
|
|
|
if ($*pres_sidebar_align == "right") {
|
|
$this->lay_print_sidebar();
|
|
}
|
|
"</div>";
|
|
"""
|
|
</body>
|
|
</html>""";
|
|
}
|
|
|
|
|
|
## -- p r i n t e n t r y -- ##############################################
|
|
|
|
function print_entry (Page p, Entry e, Color bgcolor, Color fgcolor, bool hide_text)
|
|
{
|
|
var string date = $e.time->date_format($*text_date_format);
|
|
var string time = $e.time->time_format($*text_time_format);
|
|
var string entrybarstyle = "";
|
|
var string h3style = "";
|
|
var string link_separator = separator();
|
|
|
|
if ($bgcolor and $fgcolor) {
|
|
if ($e.subject->length() > 0 and $p.view == "friends" and $*pres_use_gradients) {
|
|
var Color gbg = $fgcolor->average($bgcolor);
|
|
var string gstart = $gbg.as_string->substr(1, 6);
|
|
var string gend = $bgcolor.as_string->substr(1, 6);
|
|
var string gradient = "$*PALIMGROOT/shadow/t.gif/pt" + $gstart + $gend;
|
|
$entrybarstyle = " style=\"background: url($gradient) repeat-x;\"";
|
|
$h3style = " style=\"background-color: $bgcolor; color: $fgcolor;\"";
|
|
} else {
|
|
if (not defined $bgcolor) {
|
|
$bgcolor = $*col_border;
|
|
}
|
|
}
|
|
} else {
|
|
if (not defined $bgcolor) {
|
|
$bgcolor = $*col_border;
|
|
}
|
|
}
|
|
|
|
"\n <a name=\"$e.itemid\"></a>\n <div class=\"entry\" style=\"border: 2px solid $bgcolor;\">\n <div class=\"entryBar\"$entrybarstyle>\n";
|
|
if (defined $e.userpic and ($*show_entry_userpic or $p.view == "friends")) {
|
|
" <div class=\"userpic\" align=\"right\">\n ";
|
|
print $e.userpic->as_string();
|
|
"\n </div>\n";
|
|
}
|
|
if ( $e.subject ) {
|
|
" <h3$h3style>$e.subject</h3>\n";
|
|
}
|
|
|
|
" <span class=\"subHeading\"><b>Posted $e.security</b> ";
|
|
if ($e.poster.username != $e.journal.username) {
|
|
if ($e.journal.journal_type == "C" or $e.journal.journal_type == "S") { "by " + $e.poster->as_string(); }
|
|
if ($p.view == "friends") { " in " + $e.journal->as_string(); }
|
|
} else {
|
|
if ($p.view == "friends") {
|
|
if ($e.journal.journal_type == "Y") {
|
|
"in ";
|
|
} else {
|
|
"by ";
|
|
}
|
|
print $e.journal->as_string();
|
|
}
|
|
}
|
|
" on $date at $time</span>\n";
|
|
|
|
if ( not $hide_text ) {
|
|
# current mood, music etc
|
|
if ( size $e.metadata ) {
|
|
foreach var string k ( $e.metadata ) {
|
|
var string key = $k;
|
|
var string val = $e.metadata{$k};
|
|
if ( $k == "mood" ) {
|
|
$key = $*text_meta_mood;
|
|
} elseif ( $k == "music" ) {
|
|
$key = $*text_meta_music;
|
|
}
|
|
if ($k == "mood" and defined $e.mood_icon) {
|
|
var Image i = $e.mood_icon;
|
|
$val = "<img src=\"$i.url\" width=\"$i.width\" height=\"$i.height\" alt=\"\" align=\"absmiddle\" /> $val";
|
|
}
|
|
" <br />\n <span class=\"subHeading\"><b>$key:</b> $val</span>\n";
|
|
}
|
|
}
|
|
# entry tags (why isn't this in $e.metadata?)
|
|
if ($e.tags) {
|
|
var int tcount = 0;
|
|
" <br /><span class=\"ljtags\"><b>Tags:</b> ";
|
|
foreach var Tag t ($e.tags) {
|
|
"""<a rel="tag" href="$t.url">$t.name</a>""";
|
|
$tcount++;
|
|
if ($tcount != size $e.tags) { ", "; }
|
|
}
|
|
"</span>";
|
|
}
|
|
" </div>\n <div class=\"entryText\">\n ";
|
|
# entry text!
|
|
print $e.text;"\n </div>\n";
|
|
" <div class=\"entryFooter\">\n";
|
|
$e.comments->print();
|
|
|
|
var Link l = new Link;
|
|
var int c = 0;
|
|
var string ca = "";
|
|
foreach var string ls ($e.link_keyseq) {
|
|
$l = $e->get_link($ls);
|
|
if (defined $l) {
|
|
if ($c > 0) { print $link_separator; }
|
|
# Need a switch/case statement here, or core
|
|
# string properties for the following link text
|
|
if ($ls == "mem_add") { $ca = $*text_add_mem; }
|
|
elseif ($ls == "edit_tags") { $ca = $*text_edit_tags; }
|
|
elseif ($ls == "edit_entry") { $ca = $*text_edit_entry; }
|
|
else { $ca = $l.caption; }
|
|
"""<a href="$l.url">$ca</a> """;
|
|
$c++;
|
|
}
|
|
}
|
|
"</div>";
|
|
|
|
}
|
|
"</div><hr />";
|
|
}
|
|
|
|
function Page::print_entry ( Entry e )
|
|
{
|
|
print_entry( $this, $e, null Color, null Color, false );
|
|
}
|
|
|
|
function FriendsPage::print_entry ( Entry e )
|
|
{
|
|
var Friend f = $.friends{$e.journal.username};
|
|
print_entry( $this, $e, $f.bgcolor, $f.fgcolor, false );
|
|
}
|
|
|
|
function RecentPage::print_body {
|
|
foreach var Entry e ( $.entries ) {
|
|
$this->print_entry( $e );
|
|
}
|
|
}
|
|
|
|
function FriendsPage::print_body
|
|
{
|
|
foreach var Entry e ( $.entries ) {
|
|
$this->print_entry( $e );
|
|
}
|
|
}
|
|
|
|
## -- p r i n t c o m m e n t i n f o -- ################################
|
|
|
|
function CommentInfo::print ()
|
|
{
|
|
var Page p = get_page();
|
|
var string link_separator = separator();
|
|
|
|
" <div class=\"commentsInfo\">\n ";
|
|
if ( not $.enabled ) {
|
|
"<a href='$.read_url'>$*text_permalink</a>";
|
|
"\n </div>";
|
|
return;
|
|
}
|
|
if ( $.count > 0 or $.screened and $p.view != "entry") {
|
|
$this->print_readlink();
|
|
} else {
|
|
"<a href='$.read_url'>$*text_permalink</a>";
|
|
}
|
|
"$link_separator"; $this->print_postlink();
|
|
"\n </div>";
|
|
}
|
|
|
|
|
|
## -- p r i n t e n t r y p a g e -- ####################################
|
|
|
|
function EntryPage::print_body ()
|
|
{
|
|
|
|
# disabled until someone can figure out why these guys aren't working
|
|
# set_handler("unscreen_comment_#", [ [ "set_class", "cmtbox#", "commentBoxOne", ], ]);
|
|
# set_handler("screen_comment_#", [ [ "set_class", "cmtbox#", "commentBoxScreened", ], ]);
|
|
|
|
print_entry ( $this, $.entry, null Color, null Color, $.viewing_thread );
|
|
if ( $.entry.comments.enabled and $.comment_pages.total_subitems > 0)
|
|
{
|
|
print "<div class=\"entry\"><h3>Comments:</h3></div><hr /><div id=\"commentsWrapper\">";
|
|
if ( $this.multiform_on ) {
|
|
$this->print_multiform_start();
|
|
}
|
|
if ( $.comment_pages.total_subitems > 0 ) {
|
|
$.comment_pages->print();
|
|
$this->print_comments( $.comments );
|
|
}
|
|
if ($this.multiform_on) {
|
|
print "<hr /><div class=\"entry\"><h3>Mass Action:</h3>";
|
|
$this->print_multiform_actionline();
|
|
$this->print_multiform_end();
|
|
"</div><hr />";
|
|
}
|
|
"</div>";
|
|
}
|
|
}
|
|
|
|
|
|
## -- p r i n t e n t r y c o m m e n t -- ##############################
|
|
|
|
function EntryPage::print_comment ( Comment c )
|
|
{
|
|
var string userpic;
|
|
var string boxclass = "";
|
|
var string boxheight = "";
|
|
var string poster = defined $c.poster ? $c.poster->as_string() : "<i>$*text_poster_anonymous</i>";
|
|
var string sub_icon = defined $c.subject_icon ? $c.subject_icon->as_string() : "" ;
|
|
|
|
if ( $c.screened ) {
|
|
$boxclass = "commentBoxScreened";
|
|
} else {
|
|
$boxclass = $c.depth % 2 ? "commentBoxOne" : "commentBoxTwo";
|
|
}
|
|
|
|
if ( defined $c.userpic and $*comment_userpic_style != "off" ) {
|
|
var int w = $c.userpic.width;
|
|
var int h = $c.userpic.height;
|
|
if ( $*comment_userpic_style == "small" ) {
|
|
$w = $w / 2;
|
|
$h = $h / 2;
|
|
}
|
|
$userpic = "<div class=\"commentUpi\" style=\"width: $w; float: left; margin-right: 6px; margin-bottom: 6px;\"><a href=\"$*SITEROOT/allpics.bml?user=$c.poster.username\"><img src=\"$c.userpic.url\" width=\"$w\" height=\"$h\" alt=\"$c.poster.name\" title=\"$c.poster.name\" /></a></div>";
|
|
}
|
|
"""
|
|
<a name="$c.anchor"></a>
|
|
<div class="$boxclass" id="cmtbox$c.talkid">
|
|
$userpic
|
|
<div class="commentInfo">
|
|
<div class="commentButs" style="float: right;">
|
|
""";
|
|
var Link lnk;
|
|
$lnk = $c->get_link("screen_comment"); if($lnk) { """ <span class="icon"><a href="$lnk.url"><img src="$*img_screen" border="0" alt="$lnk.caption" title="$lnk.caption" width="20" height="21" align="middle"></span>\n"""; }
|
|
$lnk = $c->get_link("unscreen_comment"); if($lnk) { """ <span class="icon"><a href="$lnk.url"><img src="$*img_unscreen" border="0" alt="$lnk.caption" title="$lnk.caption" width="20" height="21" align="middle"></span>\n"""; }
|
|
$lnk = $c->get_link("freeze_thread"); if($lnk) { """ <span class="icon"><a href="$lnk.url"><img src="$*img_freeze" border="0" alt="$lnk.caption" title="$lnk.caption" width="20" height="21" align="middle"></span>\n"""; }
|
|
$lnk = $c->get_link("unfreeze_thread"); if($lnk) { """ <span class="icon"><a href="$lnk.url"><img src="$*img_unfreeze" border="0" alt="$lnk.caption" title="$lnk.caption" width="20" height="21" align="middle"></span>\n"""; }
|
|
$lnk = $c->get_link("delete_comment"); if($lnk) { """ <span class="icon"><a href="$lnk.url"><img src="$*img_delete" border="0" alt="$lnk.caption" title="$lnk.caption" width="20" height="21" align="middle"></span>\n"""; }
|
|
"""
|
|
</div>
|
|
$*text_comment_from $poster $*text_comment_date """ + $c.time->date_format("%%yyyy%%-%%mm%%-%%dd%% ") + $c.time->time_format("%%HH%%:%%min%%") + """
|
|
(<a href="$c.permalink_url">$*text_permalink</a>)<br />\n""";
|
|
if ( $c.metadata{"poster_ip"} ) { print "<small>$*text_comment_ipaddr " + $c.metadata{"poster_ip"} + "</small>"; }
|
|
"</div>";
|
|
if ( $c.subject != "" ) { print "<h4>$c.subject $c.subject_icon</h4>"; }
|
|
"<div class=\"commentText\">$c.text</div>";
|
|
"<div style=\"padding: 3px;\" class=\"commentLinks\">";
|
|
if ( $this.multiform_on ) {
|
|
"<div style=\"float: right;\"><label for='ljcomsel_$c.talkid'>$*text_multiform_check</label>";
|
|
$c->print_multiform_check();
|
|
"</div>";
|
|
}
|
|
if ( $c.frozen ) {
|
|
print $*text_comment_frozen + " :: ";
|
|
} else {
|
|
"(<a href='$c.reply_url'>$*text_comment_reply</a>) ";
|
|
}
|
|
if ( $c.parent_url != "" ) {
|
|
"(<a href='$c.parent_url'>$*text_comment_parent</a>) ";
|
|
}
|
|
if ( $c.thread_url != "" ) {
|
|
"(<a href='$c.thread_url'>$*text_comment_thread</a>) ";
|
|
}
|
|
"</div></div>\n\n";
|
|
}
|
|
|
|
|
|
## -- p r i n t r e p l y p a g e -- ####################################
|
|
|
|
function ReplyPage::print_body ()
|
|
{
|
|
if ( not $.entry.comments.enabled ) {
|
|
"$*text_reply_nocomments_header<hr />$*text_reply_nocomments";
|
|
return;
|
|
}
|
|
|
|
var string time = $.replyto.time->time_format($*text_time_format);
|
|
var string date = $.replyto.time->date_format($*text_date_format);
|
|
"""<div class="entry"><div class="entryBar">""";
|
|
if (defined $.replyto.userpic) {
|
|
"""<div class="userpic"><img border="0" src="$.replyto.userpic.url" width="$.replyto.userpic.width" height="$.replyto.userpic.height" vspace="5" hspace="5" alt="" /></div>""";
|
|
}
|
|
if ( $.replyto.subject ) { print "<h3>$.replyto.subject</h3>"; }
|
|
"<span class=\"subHeading\">Posted by ";
|
|
print defined $.replyto.poster ? $.replyto.poster->as_string() : "<i>(Anonymous)</i>";
|
|
" on $date at $time</span></div>";
|
|
"<div class=\"entryText\">";
|
|
print $.replyto.text + "</div>";
|
|
"""<div class="entryFooter"><div class="commentsInfo">""";
|
|
"<a href='$.entry.permalink_url'>$*text_reply_back</a></div> </div></div><hr />";
|
|
"""<div class="commentBarOne"><div class="commentInfo">""";
|
|
var string what = $.replyto.permalink_url == $.entry.permalink_url ? "entry" : "comment" ;
|
|
"<h3>Reply to this $what:</h3></div>";
|
|
$.form->print();
|
|
"</div>";
|
|
}
|
|
|
|
|
|
## -- p r i n t m o n t h p a g e -- ####################################
|
|
|
|
function MonthPage::print_body {
|
|
"<form method='post' action='$.redir.url'>";
|
|
$.redir->print_hiddens();
|
|
var string select;
|
|
if (size $.months > 1) {
|
|
$select = "<select name='redir_key'>\n";
|
|
foreach var MonthEntryInfo mei ($.months) {
|
|
var string sel;
|
|
if ($mei.date.year == $.date.year and $mei.date.month == $.date.month) {
|
|
$sel = " selected='selected'";
|
|
}
|
|
$select = $select + "<option value='$mei.redir_key'$sel>" + $mei.date->date_format($*lang_fmt_month_long) + "</option>";
|
|
}
|
|
$select = $select + "</select>\n<input type='submit' value='View' />";
|
|
}
|
|
|
|
"""
|
|
<div class="entry" align="center">$select</div>
|
|
""";
|
|
"</form>";
|
|
"<div class=\"entry\"><div class=\"monthWrapper\">";
|
|
foreach var MonthDay d ($.days) {
|
|
if ($d.has_entries) {
|
|
"""
|
|
<a name="anchor$d.day"></a>
|
|
|
|
<div class="monthRow">
|
|
<div class="monthCell monthDay">
|
|
<a href=\"$d.url\"><b>
|
|
""";
|
|
print lang_ordinal($d.day);
|
|
"""
|
|
</b></a></div>
|
|
<div class="monthCell">
|
|
<div class="entryText">
|
|
""";
|
|
$d->print_subjectlist();
|
|
"""
|
|
<div class="backtop"><a href="#top">^</a></div></div>
|
|
</div>
|
|
</div>
|
|
|
|
""";
|
|
}
|
|
}
|
|
"</div></div>";
|
|
}
|
|
|
|
|
|
## -- p r i n t y e a r p a g e -- ######################################
|
|
|
|
function YearWeek::print() {
|
|
"""
|
|
<tr>
|
|
""";
|
|
if ($.pre_empty > 0) {
|
|
"""
|
|
<td colspan="$.pre_empty"></td>
|
|
""";
|
|
}
|
|
|
|
foreach var YearDay d ($.days) {
|
|
var string day = zeropad($d.day, 2);
|
|
"<td>";
|
|
if ($d.num_entries > 0) {
|
|
var string num = string($d.num_entries);
|
|
"""
|
|
<div class="calDayEntries"><a href="$d.url" title="$num">$day</a></div></div>
|
|
""";
|
|
} else {
|
|
"""<div class="calDay">$day</div>""";
|
|
}
|
|
"""
|
|
</td>
|
|
""";
|
|
}
|
|
"""
|
|
</tr>
|
|
""";
|
|
}
|
|
|
|
function YearPage::print_month(YearMonth m) {
|
|
if (not $m.has_entries) { return; }
|
|
|
|
"""
|
|
<a name="anchor$m.month"></a>
|
|
<div class="entry">
|
|
<h3>
|
|
""";
|
|
|
|
print $m->month_format();
|
|
|
|
"""
|
|
</h3>
|
|
|
|
<span class="subHeading"><a href="$m.url"> $*text_view_month </a> :: <a href="#top">^</a></span><br /><br />
|
|
<div class="entryText">
|
|
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
|
<tr>
|
|
""";
|
|
|
|
foreach var int d (weekdays()) {
|
|
"""
|
|
<td width="14%"><div class="bigday">$*lang_dayname_short[$d]</div></td>
|
|
""";
|
|
}
|
|
"""
|
|
</tr>
|
|
""";
|
|
foreach var YearWeek w ($m.weeks) {
|
|
$w->print();
|
|
}
|
|
"""
|
|
</table>
|
|
</div>
|
|
</div><hr />
|
|
""";
|
|
|
|
}
|
|
|
|
|
|
function YearPage::print_body {
|
|
"""<div id="cal">""";
|
|
foreach var YearMonth m ($.months) {
|
|
$this->print_month($m);
|
|
}
|
|
"""</div>""";
|
|
}
|
|
|
|
|
|
## -- p r i n t d a y p a g e -- ########################################
|
|
|
|
function DayPage::print_body() {
|
|
"""<div class="entry" style="border: 2px solid black;"><h3>""";
|
|
print $.date->date_format("long"); "</h3></div><hr />";
|
|
if ($.has_entries) {
|
|
foreach var Entry e ($.entries) {
|
|
$this->print_entry($e);
|
|
}
|
|
} else {
|
|
"""<div class="entry">$*text_noentries_day</div>""";
|
|
}
|
|
}
|
|
|
|
## -- t h e e n d ! -- #################################################### |