1103 lines
34 KiB
Plaintext
1103 lines
34 KiB
Plaintext
layerinfo "type" = "layout";
|
|
layerinfo "name" = "3 column";
|
|
layerinfo author_name = "Louise (unfloopy)";
|
|
layerinfo author_email = "unfloopy@gmail.com";
|
|
layerinfo des = "3 column layout by Louise (/~unfloopy).";
|
|
layerinfo redist_uniq = "3column/layout";
|
|
|
|
################################## PROPERTIES ####################################
|
|
|
|
propgroup prez = "Presentation";
|
|
propgroup prez {
|
|
property bool show_entry_userpic { des = "Always display userpic?"; }
|
|
property use use_shared_pic;
|
|
property use view_entry_disabled;
|
|
property int page_recent_items { des = "Recent Entries: Number of Posts"; }
|
|
set page_recent_items = 10;
|
|
property int page_friends_items{ des = "Friends Page: Number of Posts"; }
|
|
set page_friends_items= 20;
|
|
set show_entry_userpic = true;
|
|
}
|
|
|
|
propgroup text = "Text";
|
|
propgroup text {
|
|
property string t_forward { des = "Entries Navigation: Forward link"; }
|
|
set t_forward = " forward >";
|
|
property string t_back { des = "Entries Navigation: Back link"; }
|
|
set t_back = "< back ";
|
|
property string t_post_comment{ des = "Entries Navigation: Post A Comment text"; }
|
|
set t_post_comment= "reply";
|
|
property string t_reply_back{ des = "Entries Navigation: Comments text"; }
|
|
set t_reply_back= "comments";
|
|
property string t_perma{ des = "Entries Navigation: Perma Link text"; }
|
|
set t_perma= "link";
|
|
property string t_divider { des = "Entries Navigation: Links divider"; }
|
|
set t_divider = " ";
|
|
property string t_comment_reply{ des = "Comments Navigation: Reply text"; }
|
|
set t_comment_reply= "reply";
|
|
property string t_read_comments{ des = "Comments Navigation: Read Comments"; }
|
|
set t_read_comments= "#";
|
|
property string t_view_recent{ des = "Navigation Bar: The Recent Entries Item"; }
|
|
set t_view_recent = "recent";
|
|
property string t_view_archive{ des = "Navigation Bar: The Archive Item"; }
|
|
set t_view_archive= "archive";
|
|
property string t_view_userinfo { des = "Navigation Bar: The Userinfo Item"; }
|
|
set t_view_userinfo = "userinfo";
|
|
property string t_view_friends{ des = "Navigation Bar: The Friends Item"; }
|
|
set t_view_friends= "friends";
|
|
property string t_nosubject{ des = "No Subject Text"; }
|
|
set t_nosubject= "(no subject)";
|
|
property string t_noentries_day{ des = "Text for a day without posts"; }
|
|
set t_noentries_day= "I didn't post on this day. Sorry!";
|
|
property string t_meta_music{ des = "Music Text"; }
|
|
set t_meta_music= "current song";
|
|
property string t_meta_mood { des = "Mood Text"; }
|
|
set t_meta_mood= "current mood";
|
|
property string t_view_month{ des = "Archive Navigation: View Subjects link text"; }
|
|
set t_view_month= "view all";
|
|
property string t_read_comments_friends{ des = "Friends Page: Read Comments"; }
|
|
set t_read_comments_friends= "#";
|
|
property string links_header { des = "Links header"; }
|
|
set links_header = "links";
|
|
property string about_title { des = "About box title"; }
|
|
set about_title= "about";
|
|
property string nav_title { des = "Navigation title"; }
|
|
set nav_title= "navigate";
|
|
property string blurb_title { des = "Blurb Title"; note = "Only used if you enter some blurb text below."; }
|
|
set blurb_title= "blurb";
|
|
property string blurb_text { des = "Blurb Text";
|
|
note = "You can write here about anything you want. It'll be displayed in a box on your journal pages."; }
|
|
set blurb_text= "";
|
|
|
|
}
|
|
|
|
propgroup images = "Images";
|
|
propgroup images {
|
|
property string bg_image { des = "Background Image URL [optional]"; }
|
|
set bg_image = "";
|
|
property string bg_repeat { des = "Background Image Repeat"; values = "repeat|Tile image|no-repeat|Do not tile image"; }
|
|
set bg_repeat = "repeat";
|
|
property string header_image { des = "Header: Image URL [optional]"; note = "If you set this, you must also enter the height of your image below."; }
|
|
set header_image = "";
|
|
property string header_height { des = "Header: Height"; note = "You must set this if you've entered a header image URL above."; }
|
|
set header_height = "0px";
|
|
property string i_comment { des = "Icon: Comments"; note = "If you don't set this, a default image will be used."; }
|
|
set i_comment = "";
|
|
property string i_perma { des = "Icon: PermaLink"; note = "If you don't set this, a default image will be used."; }
|
|
set i_perma = "";
|
|
property string i_mem { des = "Icon: Add To Memories"; note = "If you don't set this, a default image will be used."; }
|
|
set i_mem = "";
|
|
property string i_leave { des = "Icon: Leave A Comment"; note = "If you don't set this, a default image will be used."; }
|
|
set i_leave = "";
|
|
property string i_edit { des = "Icon: Edit Entry"; note = "If you don't set this, a default image will be used."; }
|
|
set i_edit = "";
|
|
}
|
|
|
|
propgroup stylesheet = "Styles";
|
|
propgroup stylesheet {
|
|
property string font_size { des = "Overall: Text Size"; }
|
|
set font_size = "8pt";
|
|
property string font_family { des = "Overall: Font Family"; }
|
|
set font_family = "Arial";
|
|
property string link_weight { des = "Overall: Link Weight"; values = "normal|Normal|bold|Bold"; }
|
|
set link_weight = "normal";
|
|
property string link_side_w { des = "Sidebar: Link weight"; values = "normal|Normal|bold|Bold"; }
|
|
set link_side_w = "normal";
|
|
property string side_h_size { des = "Sidebar: Header Font Size"; }
|
|
set entries_size = "9pt";
|
|
property string entries_size { des = "Entries: Text Size"; }
|
|
set c_sub_size = "10pt";
|
|
property string sub_size { des = "Entries: Subject Text Size"; }
|
|
set side_h_size = "13px";
|
|
property string c_sub_size { des = "Comments: Subject Text Size"; }
|
|
set sub_size = "15pt";
|
|
}
|
|
|
|
propgroup colors = "Color";
|
|
propgroup colors {
|
|
property Color color_bg { des = "Background Color"; }
|
|
set color_bg = "#E6CABE";
|
|
property Color font_color { des = "Overall: Font Color"; }
|
|
set font_color = "#4B3730";
|
|
property Color link_color { des = "Overall: Link Color"; }
|
|
set link_color = "#78534B";
|
|
property Color link_hover { des = "Overall: Link Hover Color"; }
|
|
set link_hover = "#78534B";
|
|
property Color link_side { des = "Sidebar: Link color"; }
|
|
set link_side = "#4B3730";
|
|
property Color link_side_h { des = "Sidebar: Link hover color"; }
|
|
set link_side_h = "#4B3730";
|
|
property Color side_bg { des = "Sidebar: Background color"; }
|
|
set side_bg = "#E6CABE";
|
|
property Color side_t_color { des = "Sidebar: Text color"; }
|
|
set side_t_color = "#4B3730";
|
|
property Color side_border { des = "Sidebar: Borders"; }
|
|
set side_border = "#DAB5AC";
|
|
property Color side_h_color { des = "Sidebar: Header Color"; }
|
|
set side_h_color = "#333333";
|
|
property Color side_h_border { des = "Sidebar: Header Border"; }
|
|
set side_h_border = "#333333";
|
|
property Color side_h_bg { des = "Sidebar: Header Background"; }
|
|
set side_h_bg = "#DAB5AC";
|
|
property Color entries_bg { des = "Entries: Background color"; }
|
|
set entries_bg = "#E6CABE";
|
|
property Color entries_border { des = "Entries: Border color"; }
|
|
set entries_border = "#DAB5AC";
|
|
property Color button_bg { des = "Entries: Buttons background"; }
|
|
set button_bg = "#E6CABE";
|
|
property Color button_bg_h { des = "Entries: Buttons Background hover"; }
|
|
set button_bg_h = "#ECD7C7";
|
|
property Color entries_font_color { des = "Entries: Font Color"; }
|
|
set entries_font_color = "#4B3730";
|
|
property Color sub_color { des = "Entries: Subject Color"; }
|
|
set sub_color = "#78534B";
|
|
property Color c_sub_color { des = "Comments: Subject Text Color"; }
|
|
set c_sub_color = "#4B3730";
|
|
property Color c_sub_bg { des = "Comments: Subject Background"; }
|
|
set c_sub_bg = "#DAB5AC";
|
|
}
|
|
|
|
set tags_aware = true;
|
|
property string i_tags { des = "Icon: Edit Tags"; }
|
|
|
|
####################################### STYLESHEET #######################################
|
|
|
|
function print_stylesheet () {"""
|
|
body { background: $*color_bg; font: $*font_size $*font_family; color: $*font_color;
|
|
"""; if (clean_url($*bg_image) != "") {
|
|
""" background-image: url('$*bg_image');
|
|
background-repeat: $*bg_repeat;
|
|
"""; } """ }
|
|
a { color: $*link_color; font-weight: $*link_weight; }
|
|
a:hover { color: $*link_hover; font-weight: $*link_weight; }
|
|
h1{ color: $*sub_color; font-size: $*sub_size; text-align:left; padding:5px; margin:0px; border-bottom: 1px dashed $*entries_border; }
|
|
h2{ border: 1px solid $*side_h_border; font-size: $*side_h_size; text-align:center; margin:3px 0px; padding:0px; background-color: $*side_h_bg; color: $*side_h_color; }
|
|
h3{ color: $*sub_color; text-align:left; font: bold arial; padding:5px; margin:0px; border-top: solid 1px $*entries_border;}
|
|
ul.links{ margin: 1px 0px; padding: 3px; color: $*side_t_color; list-style-type:none; }
|
|
li.links { margin-left: 5px; }
|
|
li.links a{ text-decoration:none; }
|
|
li.links_header{ font: 11px; border-bottom: 1px solid $*side_t_color; padding-top:7px; }
|
|
|
|
#container{position:absolute; top: $*header_height;}
|
|
#leftbar{ position:absolute; top: 10px; left: 10px; width: 170px;}
|
|
#rightbar{ position:absolute; top: 10px; right: 0px; width: 170px;}
|
|
#leftbar a, #rightbar a {color: $*link_side; font-weight: $*link_side_w;}
|
|
#leftbar a:hover, #rightbar a:hover {color: $*link_side_h; }
|
|
#entries{ position:relative; margin: 10px 170px 10px 180px; text-align:center; background: $*entries_bg; border: 3px double $*entries_border; padding: 10px; }
|
|
#readme { text-align:justify; padding: 2px; }
|
|
#header { position:absolute; width: 100%; top: 0px; left: 0px; height: $*header_height;
|
|
"""; if (clean_url($*header_image) != "") {
|
|
""" background-image: url('$*header_image');
|
|
background-repeat: no-repeat; background-position: center;
|
|
"""; } """ }
|
|
|
|
div.entrylinks { font: 8pt Verdana; text-align:right; padding:2px 10px 2px 10px; line-height:20px; margin-bottom:0px; margin-top:5px; border-top: 1px dashed $*entries_border; }
|
|
div.entrylinks a { background-color: $*button_bg; text-decoration:none; margin:2px; padding:2px; }
|
|
div.entrylinks a:hover {background-color: $*button_bg_h;}
|
|
div.entrylinks img { border:0px; text-decoration:none; }
|
|
div.entry{ margin-bottom:35px;}
|
|
|
|
.entrytext{ font: $*entries_size Arial; text-align:justify; color: $*entries_font_color; }
|
|
.aboutentry{ text-align: left; margin-right:10px; }
|
|
.userpic{ margin:5px; }
|
|
.sidebox{ border: 3px double $*side_border; background: $*side_bg; margin: 10px; padding:5px; }
|
|
.userpic2{ position:relative; float:left; padding: 5px; margin:0px 0px 0px 0px;}
|
|
.userpic_reply{ position:relative; float:left; padding: 5px;}
|
|
.moodpic{ position:relative; float:right; padding: 0px; padding-left: 5px; margin:0px; margin-top: -10px; margin-right: -5px; }
|
|
.calendarActive{ font-weight:bold; }
|
|
.blurb { color: $*side_t_color; }
|
|
.nosubject { font-style:italic; }
|
|
.replyform { text-align:left; clear: both; }
|
|
.replyform textarea { width: 100% ! important; }
|
|
.comment_postedby { text-align:left; font-weight:bold; }
|
|
.comment_date{ text-align:left; }
|
|
.comment_subject { color: $*c_sub_color; background: $*c_sub_bg; font: $*c_sub_size; font-weight:bold; letter-spacing:1.5px; text-align:left; padding:3px; margin-right: 0;}
|
|
.comment_wrapper{ border: 1px solid $*entries_border; background: $*entries_bg; padding:5px; margin: 0px 0px 5px 0px; }
|
|
.comment_info { width:95%; }
|
|
.comment_links { text-align:right; padding:3px; margin:0px; border-top: 1px dashed $*entries_border; }
|
|
.comment_links a { padding:2px; text-decoration:none; }
|
|
.comment_child { margin: 0px 0px 0px 20px; }
|
|
.minicomment {padding: 4px; border: 1px solid $*entries_border; }
|
|
.minicommentholder { border: 1px solid $*entries_border; }
|
|
|
|
"""; }
|
|
|
|
############################# FUNCTIONS ########################################
|
|
|
|
function prop_init()
|
|
{
|
|
if ($*i_comment == "") { $*i_comment = "$*IMGDIR/style/3column/comments.gif"; }
|
|
if ($*i_perma == "") { $*i_perma = "$*IMGDIR/style/3column/permalink.gif"; }
|
|
if ($*i_mem == "") { $*i_mem = "$*IMGDIR/style/3column/memories.gif"; }
|
|
if ($*i_leave == "") { $*i_leave = "$*IMGDIR/style/3column/leavecomment.gif"; }
|
|
if ($*i_edit == "") { $*i_edit = "$*IMGDIR/style/3column/editentry.gif"; }
|
|
if ($*i_tags == "") { $*i_tags = "$*IMGDIR/style/3column/edittags.gif"; }
|
|
}
|
|
|
|
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_linkbox (string header, string text) {
|
|
"""
|
|
<div class="sidebox">
|
|
""";
|
|
print safe """<h2>$header</h2>""";
|
|
print safe """<ul class="links">\n$text\n</ul>""";
|
|
|
|
"""
|
|
</div>
|
|
""";
|
|
|
|
}
|
|
|
|
function box_item (string text) : string {
|
|
return """$text\n""";
|
|
}
|
|
|
|
function print_box (string header, string text) {
|
|
"""
|
|
<div class="sidebox">
|
|
""";
|
|
print safe """<h2>$header</h2>""";
|
|
print safe """$text""";
|
|
|
|
"""
|
|
</div>
|
|
""";
|
|
|
|
}
|
|
|
|
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_print_userpic() {
|
|
if(defined $.journal.default_pic) {
|
|
"""
|
|
<div id="userpic">
|
|
<img src="$.journal.default_pic.url" width="$.journal.default_pic.width" height="$.journal.default_pic.height" alt="$.journal.name" title="$.journal.name" border="0" />
|
|
</div>
|
|
""";
|
|
}
|
|
}
|
|
|
|
|
|
function Page::print_linklist() {
|
|
if (size $.linklist <= 0) {
|
|
return;
|
|
}
|
|
|
|
var string links;
|
|
foreach var UserLink l ($.linklist) {
|
|
if ($l.title) {
|
|
if ($l.is_heading) {
|
|
$links = $links + """<li class="links_header">$l.title</li>""";
|
|
} else {
|
|
$links = $links + box_item("""<li class="links"><a href="$l.url">$l.title</a></li>""");
|
|
}
|
|
}
|
|
}
|
|
|
|
print_linkbox($*links_header, $links);
|
|
}
|
|
|
|
function Page::lay_print_calendar () {
|
|
var YearMonth m = $this->get_latest_month();
|
|
var string mon = $m->month_format();
|
|
var string text;
|
|
$text = """
|
|
<table cellspacing="2" cellpadding="2" border="0" width="100%">""";
|
|
foreach var YearWeek w ($m.weeks) {
|
|
$text = $text + """
|
|
<tr>""";
|
|
if($w.pre_empty > 0) {
|
|
foreach var int empty (1..$w.pre_empty) {
|
|
$text = $text + """
|
|
<td class="calempty"> </td>""";
|
|
}
|
|
}
|
|
foreach var YearDay d ($w.days) {
|
|
if($d.num_entries > 0) {
|
|
$text = $text + """
|
|
<td class="calendarActive"><a href="$d.url">$d.day</a></td>""";
|
|
} else {
|
|
$text = $text + """
|
|
<td class="calendarInactive">$d.day</td>""";
|
|
}
|
|
}
|
|
$text = $text + "</tr>\n";
|
|
}
|
|
$text = $text + "</table>";
|
|
print_box($mon, $text);
|
|
}
|
|
|
|
|
|
function Page::lay_print_subnav () { }
|
|
|
|
function RecentPage::lay_print_subnav () {
|
|
var string back;
|
|
if($.nav.backward_url != "") {
|
|
$back = """<a href="$.nav.backward_url">$*t_back</a>""";
|
|
} else {
|
|
$back = " ";
|
|
}
|
|
var string forward;
|
|
if($.nav.forward_url != "") {
|
|
$forward = """<a href="$.nav.forward_url">$*t_forward</a>""";
|
|
} else {
|
|
$forward = " ";
|
|
}
|
|
|
|
var int start = $.nav.skip;
|
|
var int end = $.nav.skip + size $.entries;
|
|
var string text = "$start - $end";
|
|
"""
|
|
<div class="systemmessage">$back | $text | $forward</div>
|
|
""";
|
|
}
|
|
|
|
function FriendsPage::lay_make_username (Entry e) {
|
|
var Friend f = $.friends{$e.journal.username};
|
|
var string url = $e.poster->base_url();
|
|
"""
|
|
<a href="$url" class="friendname" style="color: $f.fgcolor; background-color: $f.bgcolor;">$e.poster.username</a>
|
|
""";
|
|
if($e.poster.username != $e.journal.username) {
|
|
""" $e.journal""";
|
|
}
|
|
|
|
}
|
|
function EntryPage::print_body() {
|
|
""" """;
|
|
$this->print_entry($.entry);
|
|
if ($this.multiform_on) {
|
|
$this->print_multiform_start();
|
|
}
|
|
|
|
if ($.entry.comments.count > 0) {
|
|
"""
|
|
<h3>Comments</h3>
|
|
""";
|
|
}
|
|
|
|
if ($.comment_pages.total_subitems > 0) {
|
|
$.comment_pages->print();
|
|
}
|
|
|
|
if ($.entry.comments.enabled) {
|
|
$this->print_comments($.comments);
|
|
}
|
|
|
|
|
|
if ($.entry.comments.count > 0) {
|
|
"""
|
|
<div class="systemmessage">
|
|
""";
|
|
|
|
$.entry.comments->print();
|
|
|
|
"""
|
|
</div>
|
|
""";
|
|
}
|
|
|
|
if ($.comment_pages.total_subitems > 0) {
|
|
$.comment_pages->print();
|
|
}
|
|
|
|
if ($this.multiform_on and ($.entry.comments.count > 0)) {
|
|
"""
|
|
<div class="replyform">
|
|
""";
|
|
$this->print_multiform_actionline();
|
|
"""
|
|
</div>
|
|
""";
|
|
$this->print_multiform_end();
|
|
}
|
|
""" """;
|
|
}
|
|
|
|
function EntryPage::print_comments(Comment[] cs) {
|
|
if (size $cs == 0) { return; }
|
|
foreach var Comment c ($cs) {
|
|
if ($c.full) {
|
|
$this->print_comment($c);
|
|
} else {
|
|
$this->print_comment_partial($c);
|
|
}
|
|
}
|
|
}
|
|
|
|
function EntryPage::print_comment(Comment c) {
|
|
var string datetime;
|
|
$datetime = $c.time->date_format("long")+", " + $c.time->time_format();
|
|
var string picword;
|
|
if (defined $c.userpic and $*comment_userpic_style !="off") {
|
|
$picword = $c.metadata{"picture_keyword"};
|
|
}
|
|
var string parent;
|
|
var string thread;
|
|
if($c.parent_url != "") {
|
|
$parent = """<a href="$c.parent_url">$*text_comment_parent</a>$*t_divider""";
|
|
}
|
|
if($c.thread_url != "") {
|
|
$thread = """<a href="$c.thread_url">$*text_comment_thread</a>$*t_divider""";
|
|
}
|
|
var string subjecticon;
|
|
if (defined $c.subject_icon) {
|
|
$subjecticon = """<img src="$c.subject_icon.url" width="$c.subject_icon.width" height="$c.subject_icon.height" alt="" />""";
|
|
}
|
|
var string ip;
|
|
if ($c.metadata{"poster_ip"}) {
|
|
$ip = """ """ + $c.metadata{"poster_ip"};
|
|
}
|
|
var string poster = defined $c.poster ? $c.poster->as_string() : "<b>$*text_poster_anonymous</b>";
|
|
var string poster_name; $poster_name= $c.poster.name;
|
|
var string pic;
|
|
if (defined $c.userpic and $*comment_userpic_style != "off") {
|
|
$pic = """
|
|
<img src="$c.userpic.url" width="$c.userpic.width" height="$c.userpic.height" alt="$picword" title="$picword" />""";
|
|
}
|
|
|
|
var string indent = ($c.depth - 1) * 25 + "px";
|
|
"""
|
|
<a name='$c.anchor'></a> <div class="comment_wrapper">
|
|
<table class="comment_info"><tr><td>
|
|
<div class="comment_postedby">Posted by: $poster_name ($poster) <span class="ip">$ip</span></div>
|
|
<div class="comment_date">Posted at: $subjecticon $datetime</div>
|
|
""";
|
|
|
|
if ($.multiform_on) {
|
|
"""<div class="comment_date"><label for="ljcomsel_$c.talkid">$*text_multiform_check</label> """;
|
|
$c->print_multiform_check();
|
|
"""</div>
|
|
""";
|
|
}
|
|
|
|
"""
|
|
<div class="comment_subject">$c.subject</div></td>
|
|
<td valign="top">$pic</td></tr>
|
|
</table>
|
|
|
|
<div class="entrytext"><p>$c.text</p> </div>
|
|
<div class="comment_links"> <a href="$c.reply_url">$*text_comment_reply</a>$*t_divider
|
|
<a href="$c.permalink_url">$*text_permalink</a>$*t_divider $parent$thread
|
|
</div>
|
|
""";
|
|
|
|
if ((size $c.replies) > 0 and $c.replies[0].full == false) {
|
|
"""<div class="comment_child">\n""";
|
|
$this->print_comments($c.replies);
|
|
"</div>\n";
|
|
}
|
|
|
|
"""
|
|
</div>
|
|
""";
|
|
if ((size $c.replies) > 0 and $c.replies[0].full == true) {
|
|
"""<div class="comment_child">""";
|
|
$this->print_comments($c.replies);
|
|
"""</div>""";
|
|
}
|
|
|
|
}
|
|
|
|
function EntryPage::print_comment_partial(Comment c) {
|
|
var string poster = defined $c.poster ? $c.poster->as_string() : "<i>$*text_poster_anonymous</i>";
|
|
var string subj = $c.subject != "" ? $c.subject : """<i class="nosubject">$*t_nosubject</i>""";
|
|
var string indent = ($c.depth - 1) * 25 + "px";
|
|
"""
|
|
<div class="entry" style="margin-left: $indent;"><div class="minicommentholder">
|
|
<div class="minicomment">$poster - <a href="$c.permalink_url">$subj</a></div></div></div>
|
|
""";
|
|
$this->print_comments($c.replies);
|
|
}
|
|
|
|
function ItemRange::print() {
|
|
if ($.all_subitems_displayed) { return; }
|
|
"""
|
|
<div class="systemmessage">
|
|
<b>""";
|
|
print lang_page_of_pages($.current, $.total);
|
|
"</b> — ";
|
|
foreach var int i (1..$.total) {
|
|
if ($i == $.current) { """<b class="systemtext">[$i]</b>""";
|
|
|
|
} else {
|
|
var string url_of = $this->url_of($i);
|
|
"<a href='$url_of'><b>[$i]</b></a>";
|
|
}
|
|
}
|
|
"""</div>""";
|
|
}
|
|
function Page::print_entry (Entry e) {
|
|
# Print an anchor
|
|
print """<a name="item""" + $e.itemid + """\"></a>""";
|
|
# Get the right time and date of the post
|
|
var string time = $e.time->time_format();
|
|
var string date = $e.time->date_format("long");
|
|
# Get the Locked or Private icon, if needed.
|
|
var string security;
|
|
if ($e.security != "") {
|
|
$security = """<img src="$e.security_icon.url" align="right" """+
|
|
"""width="$e.security_icon.width" height="$e.security_icon.height" """+
|
|
"""alt="[$e.security]" />""";
|
|
}
|
|
|
|
var UserLite name;
|
|
var string pname;
|
|
var string poster_name; $poster_name= $e.poster.name;
|
|
var string poster = defined $e.poster ? $e.poster->as_string() : "<b>$*text_poster_anonymous</b>";
|
|
var bool show_name = ($.view == "friends" or $e.poster.username != $.journal.username or $.view == "entry") ? true : false;
|
|
var bool show_pic = (defined $e.userpic and ($.view == "friends" or $*show_entry_userpic or $e.poster.username != $e.journal.username or $.view == "entry")) ? true : false;
|
|
|
|
if ($.view == "friends"){ """
|
|
|
|
<div class="comment_wrapper">
|
|
"""; if($show_pic) {
|
|
"""
|
|
<div class="userpic2">
|
|
<img src="$e.userpic.url" width="$e.userpic.width" height="$e.userpic.height" alt="$e.poster.name [userpic]" title="$e.poster.name [userpic]" border="0" />
|
|
</div> """; } """
|
|
|
|
<div class="comment_subject">$security $e.subject</div>
|
|
<div class="comment_postedby">""";
|
|
if($e.poster.username != $e.journal.username) {
|
|
""" in $e.journal</div><div class="comment_postedby">""";
|
|
} """ by $poster_name ($poster)</div>
|
|
<div class="comment_date">at $date ($time)""";
|
|
|
|
$e->print_metadata(); """
|
|
</div>
|
|
<div class="comment_links"> """; # Prints the row of comment links
|
|
|
|
$e.comments->print();
|
|
"""<a href="$e.permalink_url" title="$*t_perma"><img src="$*i_perma" border="0" alt="$*t_perma" title="$*t_perma" /></a>""";
|
|
var string{} my_captions = {"edit_entry" => "$*i_edit", "mem_add" => "$*i_mem", "edit_tags" => "$*i_tags"};
|
|
foreach var string key (["edit_entry","mem_add","tell_friend","edit_tags"]) {
|
|
var Link link = $e->get_link($key);
|
|
if ($link) {
|
|
"""<a href=\"$link.url\" title="$link.caption"><img src="$my_captions{$key}" border="0" title="$link.caption" alt="$link.caption" /></a>""";
|
|
}
|
|
}
|
|
"""
|
|
</div>
|
|
|
|
<div class="entrytext"><p>$e.text</p></div>
|
|
|
|
</div> """;
|
|
|
|
} else {
|
|
|
|
if($show_pic) {
|
|
"""
|
|
<div class="userpic2">
|
|
<img src="$e.userpic.url" width="$e.userpic.width" height="$e.userpic.height" alt="$e.poster.name [userpic]" title="$e.poster.name [userpic]" border="0" />
|
|
</div>
|
|
""";
|
|
} """
|
|
|
|
<div class="entry">
|
|
<h1>$e.subject</h1>
|
|
<div class="aboutentry">$security $date ($time)
|
|
""";
|
|
|
|
$e->print_metadata();
|
|
|
|
"""
|
|
</div><div class="entrylinks">
|
|
""";
|
|
|
|
$e.comments->print();
|
|
"""<a href="$e.permalink_url" title="$*t_perma"><img src="$*i_perma" border="0" alt="$*t_perma" title="$*t_perma" /></a>""";
|
|
var string{} my_captions = {"edit_entry" => "$*i_edit", "mem_add" => "$*i_mem", "edit_tags" => "$*i_tags"};
|
|
foreach var string key ($e.link_keyseq) {
|
|
var Link link = $e->get_link($key);
|
|
if ($link) {
|
|
# If there is a custom icon for this link then display it. Otherwise, just fall back on the
|
|
# one provided by the system. It'll look a bit weird, but it's better than there being
|
|
# broken images or missing links.
|
|
if ($my_captions{$key} != "") {
|
|
"""<a href=\"$link.url\" title="$link.caption"><img src="$my_captions{$key}" border="0" title="$link.caption" alt="$link.caption" /></a>""";
|
|
}
|
|
else {
|
|
print $link->as_string();
|
|
}
|
|
}
|
|
}
|
|
"""</div>
|
|
<div class="entrytext">
|
|
<p>$e.text</p>
|
|
</div>
|
|
|
|
</div>
|
|
""";
|
|
}
|
|
}
|
|
|
|
|
|
function CommentInfo::print() {
|
|
if ($.enabled) {
|
|
if ($.count > 0 or $.screened) {
|
|
$this->print_readlink();
|
|
}
|
|
$this->print_postlink();
|
|
}
|
|
}
|
|
|
|
function CommentInfo::print_postlink() {
|
|
var Page p = get_page();
|
|
"""<a href="$.post_url" title="$*t_post_comment"><img src="$*i_leave" border="0" title="$*t_post_comment" alt="$*t_post_comment" /></a> $*t_divider """;
|
|
}
|
|
|
|
function CommentInfo::print_readlink {
|
|
var Page p = get_page();
|
|
"<a href=\"$.read_url\" title=\"$*t_read_comments\">"+
|
|
get_plural_phrase($.count, $p.view == "friends" ?
|
|
"t_read_comments_friends" : "t_read_comments")+
|
|
"<img src=\"$*i_comment\" border=\"0\" title=\"$*text_reply_back\" alt=\" $*text_reply_back\" /></a>$*t_divider";
|
|
}
|
|
|
|
function DayPage::lay_print_subnav () {
|
|
var string back;
|
|
if($.prev_url != "") {
|
|
$back = """<a href="$.prev_url">$*t_back</a>""";
|
|
} else {
|
|
$back = " ";
|
|
}
|
|
var string forward;
|
|
if($.next_url != "") {
|
|
$forward = """<a href="$.next_url">$*t_forward</a>""";
|
|
} else {
|
|
$forward = " ";
|
|
}
|
|
|
|
var string text = $.date->date_format("long");
|
|
|
|
"""
|
|
<div class="systemmessage">$back | $text | $forward</div>
|
|
""";
|
|
|
|
}
|
|
|
|
|
|
|
|
############################# REPLY PAGE #########################################
|
|
|
|
function ReplyPage::print_body() {
|
|
|
|
var EntryLite e = $.replyto;
|
|
var string poster = defined $e.poster ? $e.poster->as_string() : "<i>$*text_poster_anonymous</i>";
|
|
var string datetime;
|
|
var string time = $e.time->time_format();
|
|
var string date = $e.time->date_format("long");
|
|
|
|
var UserLite name;
|
|
"""
|
|
<div class="entry">
|
|
<h3>$date</h3>""";
|
|
if(defined $e.userpic and $*comment_userpic_style != "off") {
|
|
$name = $e.poster;
|
|
"""<div class="userpic_reply">""";
|
|
if (defined $e.userpic or (defined $e.userpic and $.view == "entry" and $*show_entry_userpic)) {
|
|
"""<img src="$e.userpic.url" width="$e.userpic.width" height="$e.userpic.height" alt="" />""";
|
|
}
|
|
"""</div>""";
|
|
} """
|
|
|
|
<h1>$e.subject</h1>
|
|
<div class="entrytext">
|
|
<p>$e.text</p> </div>
|
|
<div class="entrylinks">Posted at $time $*t_divider <a href="$.entry.comments.read_url" class="comments">$*t_reply_back</a>""";
|
|
|
|
|
|
foreach var string key ($e.link_keyseq) {
|
|
var Link link = $e->get_link($key);
|
|
if ($link) {
|
|
"""$*t_divider <a href=\"$link.url\">$link.caption</a>""";
|
|
}
|
|
}
|
|
""" $*t_divider <a href="$e.permalink_url">$*text_permalink</a></div>
|
|
<div class="replyform">
|
|
""";
|
|
$.form->print();
|
|
"""
|
|
</div></div>
|
|
""";
|
|
}
|
|
|
|
function Entry::print_metadata() {
|
|
var string caption;
|
|
var string val;
|
|
var Image i;
|
|
print $this->get_tags_text();
|
|
if (size $.metadata == 0) { return; }
|
|
foreach var string k ($.metadata) {
|
|
$caption = $k;
|
|
$val = $.metadata{$k};
|
|
if ($k == "music") {
|
|
$caption = $*t_meta_music;
|
|
}
|
|
elseif ($k == "mood") {
|
|
$caption = $*t_meta_mood;
|
|
if (defined $.mood_icon) {
|
|
$i = $.mood_icon;
|
|
$val = """<div class="moodpic"><img src="$i.url" width="$i.width" height="$i.height" alt="$val" title="$val" /></div> $val""";
|
|
}
|
|
}
|
|
println """<br />$caption: $val""";
|
|
}
|
|
}
|
|
|
|
|
|
################################ VIEWS #########################################
|
|
|
|
function RecentPage::print_body () {
|
|
"""
|
|
<div class="entries">
|
|
""";
|
|
|
|
foreach var Entry e ($.entries) {
|
|
$this->print_entry($e);
|
|
}
|
|
|
|
"""
|
|
</div>
|
|
""";
|
|
}
|
|
|
|
|
|
function DayPage::print_body() {
|
|
|
|
"""<div class="entries">""";
|
|
if ($.has_entries) {
|
|
foreach var Entry e ($.entries) {
|
|
$this->print_entry($e);
|
|
}
|
|
|
|
} else {
|
|
"<p>$*t_noentries_day</p>";
|
|
}
|
|
"""</div>""";
|
|
|
|
}
|
|
|
|
function MonthPage::view_title : string {
|
|
return $.date->date_format($*lang_fmt_month_long);
|
|
}
|
|
|
|
function MonthPage::print_body {
|
|
"<form method='post' action='$.redir.url'>";
|
|
$.redir->print_hiddens();
|
|
var string back;
|
|
var string forward;
|
|
if ($.prev_url != "") { $back = """<a href="$.prev_url">$*t_back</a>"""; }
|
|
if ($.next_url != "") { $forward = """<a href="$.next_url">$*t_forward</a>"""; }
|
|
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="messageholder"><div class="systemmessage">
|
|
<table cellspacing="0" cellpadding="0" border="0" width="100%">
|
|
<tr>
|
|
<td width="15%">$back</td>
|
|
<td align="center" width="70%">$select</td>
|
|
<td align="right" width="15%">$forward</td>
|
|
</tr>
|
|
</table>
|
|
</div></div>
|
|
""";
|
|
"</form>";
|
|
foreach var MonthDay d ($.days) {
|
|
if ($d.has_entries) {
|
|
"""
|
|
<a name="anchor$d.day"></a>
|
|
<div class="entry">
|
|
<div class="entrydivider"></div>
|
|
<div class="entrylinks"><a href=\"$d.url\"> <b>
|
|
""";
|
|
print lang_ordinal($d.day);
|
|
"""
|
|
</b> </a></div>
|
|
<div class="entries">
|
|
<div class="entrytext">
|
|
""";
|
|
$d->print_subjectlist();
|
|
"""
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
""";
|
|
}
|
|
}
|
|
}
|
|
|
|
function MonthDay::print_subjectlist() {
|
|
|
|
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 != "") {
|
|
" <a href=\"$e.permalink_url\">$e.subject</a>";
|
|
} else {
|
|
""" <a href="$e.permalink_url"><i class="nosubject">$*t_nosubject</i></a>""";
|
|
}
|
|
if ($e.comments.count > 0) {
|
|
" - " + get_plural_phrase($e.comments.count, "t_read_comments");
|
|
}
|
|
if ($e.comments.screened) {
|
|
" <b>$*text_month_screened_comments</b>";
|
|
}
|
|
"<br />\n";
|
|
}
|
|
}
|
|
|
|
function YearPage::print_body {
|
|
$this->print_year_links();
|
|
"""<div id="cal">""";
|
|
foreach var YearMonth m ($.months) {
|
|
$this->print_month($m);
|
|
}
|
|
"""</div>""";
|
|
}
|
|
|
|
function YearPage::print_year_links() {
|
|
"""<div class="systemmessage">""";
|
|
foreach var YearYear y ($.years) {
|
|
if ($y.displayed) {
|
|
"""<b class="systemtext">$y.year</b>""";
|
|
} else {
|
|
"""<b>$*t_divider<a href="$y.url">$y.year</a>$*t_divider</b>""";
|
|
}
|
|
}
|
|
"""</div>""";
|
|
}
|
|
|
|
function YearPage::print_month(YearMonth m) {
|
|
if (not $m.has_entries) { return; }
|
|
|
|
"""
|
|
<a name="anchor$m.month"></a>
|
|
<div class="entry">
|
|
<div class="entrydivider"></div>
|
|
<div class="entryinfo">
|
|
""";
|
|
|
|
print $m->month_format();
|
|
|
|
"""
|
|
</div>
|
|
<div class="entrylinks"><a href="$m.url">$*t_view_month</a></div>
|
|
<div class="entrytext">
|
|
<div align="center"><table cellspacing="0" cellpadding="0" border="0" width="100%">
|
|
<tr>
|
|
""";
|
|
|
|
foreach var int d (weekdays()) {
|
|
"""
|
|
<td width="14%"><div class="calendarInactive">$*lang_dayname_short[$d]</div></td>
|
|
""";
|
|
}
|
|
"""
|
|
</tr>
|
|
""";
|
|
foreach var YearWeek w ($m.weeks) {
|
|
$w->print();
|
|
}
|
|
"""
|
|
</table></div>
|
|
</div>
|
|
</div>
|
|
""";
|
|
|
|
}
|
|
|
|
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>
|
|
<div class="calendarInactive">$day</div>
|
|
""";
|
|
if ($d.num_entries > 0) {
|
|
var string num = $d.num_entries < 10 ? " " + string($d.num_entries) : string($d.num_entries);
|
|
"""
|
|
<div class="calendarActive"><a href="$d.url">$num</a></div>
|
|
""";
|
|
} else {
|
|
"""
|
|
<div class="calendarInactive"> - </div>
|
|
""";
|
|
|
|
}
|
|
"""
|
|
</td>
|
|
""";
|
|
}
|
|
"""
|
|
</tr>
|
|
""";
|
|
}
|
|
|
|
# Override the view names to be all short and lowercase-like
|
|
function lang_viewname(string viewid) [notags] : string
|
|
"Get some words representing a view"
|
|
{
|
|
if ($viewid == "recent") { return $*t_view_recent; }
|
|
if ($viewid == "archive") { return $*t_view_archive; }
|
|
if ($viewid == "friends") { return $*t_view_friends; }
|
|
if ($viewid == "day") { return "day"; }
|
|
if ($viewid == "month") { return "month"; }
|
|
if ($viewid == "userinfo") { return $*t_view_userinfo; }
|
|
if ($viewid == "entry") { return "read comments"; }
|
|
if ($viewid == "reply") { return "post comment"; }
|
|
return "Unknown View";
|
|
}
|
|
|
|
############################## COMMON HTML ############################################
|
|
|
|
function Page::print () {
|
|
|
|
var string title = $this->title();
|
|
|
|
"""
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
<head>
|
|
<title>$title</title>
|
|
|
|
""";
|
|
|
|
$this->print_head();
|
|
|
|
|
|
if ($*external_stylesheet) {
|
|
println """<link rel="stylesheet" href="$.stylesheet_url" type="text/css" />""";
|
|
}
|
|
else {
|
|
println """<style type="text/css">""";
|
|
print_stylesheet();
|
|
println """</style>""";
|
|
}
|
|
|
|
"""
|
|
</head>
|
|
<body>
|
|
<a name="top"></a>
|
|
<div id="header"></div>
|
|
<div id="container">
|
|
|
|
|
|
<div id="entries"><div>
|
|
""";
|
|
$this->lay_print_subnav();
|
|
$this->print_body();
|
|
$this->lay_print_subnav();
|
|
"""
|
|
|
|
</div></div>
|
|
|
|
<div id="rightbar">
|
|
|
|
<div class="sidebox">
|
|
<h2>$*nav_title</h2>
|
|
<ul class="links">
|
|
""";
|
|
|
|
foreach var string vl ($.views_order) {
|
|
println "<li class=\"links\"><a href=\""+ehtml($.view_url{$vl})+"\">"+lang_viewname($vl)+"</a></li>";
|
|
}
|
|
|
|
"""
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
""";
|
|
$this->print_linklist();
|
|
"""
|
|
|
|
</div>
|
|
|
|
<div id="leftbar">
|
|
|
|
<div class="sidebox">
|
|
<h2>$*about_title</h2>
|
|
<div align="center">
|
|
""";
|
|
$this->lay_print_userpic();
|
|
"""
|
|
<br />
|
|
<span class='ljuser' style='white-space:nowrap;'><a href='$*SITEROOT/userinfo.bml?user=$.journal.username'><img src='http://stat.livejournal.com/img/userinfo.gif' alt='userinfo' width='17' height='17' style='vertical-align:bottom;border:0;' /></a><a href='$*SITEROOT/users/$.journal.username/'><b>$.journal.username</b></a></span>
|
|
<br />
|
|
<a href="$*SITEROOT/friends/add.bml?user=$.journal.username"><img src="http://stat.livejournal.com/img/btn_addfriend.gif" alt="Friend Me" title="Friend Me" width="22" height="20" style="border: 0;" /></a>
|
|
<a href="$*SITEROOT/todo/?user=$.journal.username"><img src="http://stat.livejournal.com/img/btn_todo.gif" alt="My To-do List" title="My To-do List" width="22" height="20" style="border: 0;" /></a>
|
|
<a href="$*SITEROOT/tools/memories.bml?user=$.journal.username"><img src="http://stat.livejournal.com/img/btn_memories.gif" alt="Memories" title="Memories" width="22" height="20" style="border: 0;" /></a>
|
|
</div></div>
|
|
|
|
<div class="sidebox">
|
|
<h2>$*blurb_title</h2>
|
|
<div class="blurb">
|
|
$*blurb_text
|
|
</div>
|
|
</div>
|
|
|
|
""";
|
|
$this->lay_print_calendar();
|
|
"""
|
|
|
|
</div>
|
|
|
|
<div style="clear: both"></div>
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|
|
""";
|
|
}
|