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; width: 97%;} #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> """; }