# -*-s2-*- layerinfo type = "layout"; layerinfo name = "Opal (Libra OSWD)"; layerinfo lang = "en"; layerinfo author_name = "Ported by Kevin Phillips"; layerinfo author_email = "xevinx@livejournal.com"; layerinfo des = "Based on the Libra and Pasilda design available from Open Source Web Designs. Originally written by whompy."; layerinfo redist_uniq = "opal/layout"; layerinfo previews = "opal/opal.jpg"; ################################################################################ # # Properties # propgroup prez = "Presentation"; propgroup prez { property use font_base; property use font_fallback; property string static_font_size { noui = 1; } property string static_font_measurement { noui = 1; } property use page_recent_items; property use page_friends_items; property use use_shared_pic; property use view_entry_disabled; property bool show_entry_userpic { des = "Always display userpic?"; } property int summary_items { des = "Summary Items"; note="Maximum number of items in the Page Summary list. Set to 0 to turn off the Page Summary. Set to 100 to show all available items."; } property bool use_count { noui=1; } set static_font_size = "12"; set static_font_measurement = "px"; set summary_items = 100; set show_entry_userpic = false; set font_fallback = "sans-serif"; } propgroup colors = "Colors"; propgroup colors { property Color color_bg { des = "Background Color"; } property Color color_bg_font { des = "Background Font Color"; note = "The color of any font appearing on the background color."; } property Color color_med { des = "Page Holder Background"; note = "This is the background of the main body, but within the outer borders."; } property Color color_med_font { des = "Page Holder Font Color"; note="The color of the font appearing on the Page Holder Background color."; } property Color color_fg { des = "Content Background Color"; note = "This is the background to the main content where the entries and side elements are."; } property Color color_fg_font { des = "Content Font Color"; note = "The color of the font that appears on in the main Content area."; } property Color color_link { des = "Link Color"; } property Color color_visited { des = "Visited Link Color"; } set color_bg = "#2d3851"; set color_bg_font = "#ffffff"; set color_med = "#7C8AA4"; set color_med_font = "#e9f2fc"; set color_fg = "#BFC4CB"; set color_fg_font = "#333333"; } propgroup text = "Text"; propgroup text { property string free_text_header { des = "Free Text Header"; } property string free_text_text { des = "Free Text Text"; cols = 30; rows = 10; } property string links_header { des = "Links Header"; } property string page_summary_title { des = "Page Summary Header"; } property use text_view_userinfo; property use text_view_recent; property use text_view_friends; property use text_view_archive; property string text_forward { des = "Text to show in a link to skip forward through entries"; } property string text_back { des = "Text to show in a link to skip backward through entries"; } property use text_read_comments; property use text_read_comments_friends; property use text_post_comment; property use text_post_comment_friends; property use text_comment_reply; property use text_reply_back; property use text_nosubject; property use text_noentries_day; property use text_meta_music; property use text_meta_mood; set page_summary_title = "Page Summary"; set links_header = "Links"; set free_text_header = "About this journal"; set free_text_text = ""; set text_back = "Back"; set text_forward = "Forward"; } set tags_aware = true; ################################################################################ # # Prop Init # function prop_init () { if($*color_bg.as_string == "") { $*color_bg = "#000000"; } if($*color_fg.as_string == "") { $*color_fg = "#000000"; } if($*color_fg_font.as_string == "") { $*color_fg_font = "#000000"; } } ################################################################################ # # Stylesheet # function getAltColor (Color color, string dir, int num) : Color { var int lt = $color->lightness(); if($dir == "light") { if($lt > 200) { $color = $color->darker($num); } else { $color = $color->lighter($num); } } elseif($dir == "dark") { if($lt < 55) { $color = $color->lighter($num); } else { $color = $color->darker($num); } } return $color; } function print_stylesheet () { var Color color_bg_lt = getAltColor($*color_bg, "light", 30); var Color color_fg_dk = getAltColor($*color_fg, "dark", 20); var Color color_fg_dk_font = getAltColor($*color_fg_font, "dark", 20); var Color color_divider = getAltColor($color_fg_dk, "dark", 30); var Color color_fg_dk_dk_font = getAltColor($color_fg_dk, "dark", 50); var Color color_border = getAltColor($*color_bg, "light", 90); var string base = ($*font_base != "") ? "$*font_base, " : ""; """ body { font-family: $base $*font_fallback; background-color: $*color_bg; margin: 10px; } .border4 { border: 1px solid $*color_bg; } .border3 { border: 1px solid $*color_fg; } .border2 { border: 2px solid $color_border; } """; if($*color_link.as_string != "") { """ A { color: $*color_link; } """; } if($*color_visited.as_string != "") { """ A:Visited { color: $*color_visited; } """; } """ #bodycontent { background-color: $*color_med; border: 1px solid $*color_bg; padding: 3px; } #headerinfo { background-color: $*color_bg; color: $*color_bg_font; text-align: right; font-size: 10px; padding: 2px; margin-top: 1px; } #header { color: $*color_med_font; } #header h3 { font-weight: normal; } #userpic { float: right; } .userpic2 { float: right; text-align: right; margin-top: 2px; margin-right: 3px; } #nav { white-space: nowrap; margin-bottom: 10px; font-size: $*static_font_size$*static_font_measurement; } #nav A { border: 1px solid $*color_bg; padding-left: 10px; padding-right: 10px; padding-top: 2px; padding-bottom: 2px; height: 20px; text-decoration: none; color: $*color_bg_font; background-color: $color_bg_lt; } #nav A:Hover { background-color: $*color_bg; } #content { background-color: $*color_fg; border: 1px solid $color_fg_dk; padding: 4px; } .columncontent { background-color: $color_bg_lt; border: 1px solid $*color_bg; padding: 3px; width: 200px; font-size: $*static_font_size$*static_font_measurement; color: $*color_bg_font; } .columnitem { background-color: $color_fg_dk; padding: 3px; margin-top: 5px; color: $*color_fg_font; border-top: 1px solid $color_divider; border-bottom: 1px solid $color_divider; overflow: hidden; } .entries { color: $*color_fg_font; } .entrydivider { border-top: 1px solid $color_divider; border-bottom: 1px solid $*color_fg; } .minicomment { background-color: $color_fg_dk; padding: 4px; color: $*color_fg_font; border: 1px solid $*color_fg; font-size: $*static_font_size$*static_font_measurement; } .minicommentholder { border: 1px solid $color_divider; } .entryinfo { background-color: $color_fg_dk; font-size: $*static_font_size$*static_font_measurement; padding: 4px; color: $*color_fg_font; } .postedby { background-color: $color_fg_dk; padding: 6px; font-size: $*static_font_size$*static_font_measurement; } .entrylinks { border-bottom: 1px solid $*color_fg; background-color: $color_fg_dk; padding-top: 4px; padding-bottom: 4px; font-size: $*static_font_size$*static_font_measurement; } .entrylinks A { text-decoration: none; padding-top: 4px; padding-bottom: 4px; white-space: nowrap; color: $*color_fg_font; border-right: 1px solid $*color_fg; } .entrylinks A:Hover { background-color: $*color_fg; } .messageholder { border: 1px solid $*color_bg;; margin-bottom: 5px; margin-top: 5px; } .systemmessage { background-color: $color_bg_lt; color: $*color_bg_font; border: 1px solid $color_border; font-size: $*static_font_size$*static_font_measurement; } .systemtext { font-weight: normal; padding-left: 10px; padding-right: 10px; } .systemmessage A { text-decoration: none; padding-left: 10px; padding-right: 10px; color: $*color_bg_font; padding-top: 4px; padding-bottom: 4px; } .systemmessage A:Hover { background-color: $*color_bg; } .systemmessage input, .systemmessage textarea, .systemmessage select { background-color: $*color_fg; color: $*color_fg_font; } .systemmessage TD { padding: 4px; font-size: $*static_font_size$*static_font_measurement; color: $*color_bg_font; } .entry { margin-bottom: 30px; } .entrytext { margin: 10px; } .subject { font-weight: bold; } .meta { font-size: $*static_font_size$*static_font_measurement; padding: 4px; } .meta A { text-decoration: none; color: $*color_link; } .systemmessage A:Hover { background-color: $*color_bg; } #sidecolumn TD { color: $*color_bg_font; } #sidecolumn A { text-decoration: none; color: $*color_fg_font; } .sidetd { width: 200px; } .backtop { text-align: right; } .backtop A { color: $*color_fg_font; font-size: $*static_font_size$*static_font_measurement; text-decoration: none; padding-bottom: 1px; } #cal A { text-decoration: none; color: $*color_fg_font; } .calrow { clear: both; font-family: Arial, sans-serif; } .calempty { width: 24px; font-size: 11px; margin: 1px; float: left; } .calactitem { float: left; margin: 1px; width: 23px; font-size: 11px; text-align: center; background-color: $color_fg_dk; border-right: 1px solid $color_bg_lt; border-bottom: 1px solid $color_bg_lt; } .calinitem { float: left; margin: 1px; width: 23px; font-size: 11px; text-align: center; border-right: 1px solid $color_fg_dk; border-bottom: 1px solid $color_fg_dk; } .friendcolor { width: 10px; height: 10px; border: 2px solid $*color_fg; } .multiform { font-weight: bold; } .ip { color: $color_fg_dk_dk_font; } .friendname { padding: 4px; text-decoration: none; border-left: 1px solid $*color_fg; border-right: 1px solid $*color_fg; } .bigday { font-size: 2em; color: $color_fg_dk; float: left; font-weight: bolder; } .notablemessage { padding: 4px; } """; } ################################################################################ # # Global functions # function generateDots (string un) : string { var string dots; if($un != "") { foreach var string s ($un) { if($s == "a" or $s == "c" or $s == "e" or $s == "f" or $s == "h" or $s == "k" or $s == "m" or $s == "n" or $s == "p" or $s == "r" or $s == "t" or $s == "v" or $s == "x" or $s == "z") { $dots = $dots + ":"; } elseif($s == " ") { $dots = $dots + " "; } else { $dots = $dots + "."; } } } return $dots; } function print_box (string header, string text) { """ <div class="border4"> <div class="border3"> <div class="border2"> <div class="columncontent"> """; print safe """<strong>$header</strong>"""; print safe """$text"""; """ </div> </div> </div> </div> <br /> """; } function box_item (string text) : string { return """<div class="columnitem">$text</div>\n"""; } 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; } ################################################################################ # # Layout specific functions # function Page::lay_print_userpic() { if(defined $.journal.default_pic) { """ <div id="userpic"><a href="$*SITEROOT/allpics.bml?user=$.journal.username"><img src="$.journal.default_pic.url" width="$.journal.default_pic.width" height="$.journal.default_pic.height" alt="$.journal.name" title="$.journal.name" border="0" /></a></div> """; } } function Page::lay_print_username () { var string dots = generateDots($.global_title); """ <div id="headerinfo"> $.journal.username <br /> $dots </div> """; } function Page::lay_print_header () { var string title = $this->title(); """ <div id="header"> <h3>$title</h3> <div id="nav"> """; foreach var string v ($.views_order) { println "<a href=\""+$.view_url{$v}+"\">"+lang_viewname($v)+"</a>"; } var string website; if($.journal.website_url != "") { $website = """<a href="$.journal.website_url">$.journal.website_name</a>"""; } """ $website </div> </div> """; } function Page::lay_print_freetext () { if($*free_text_text != "") { var string text = box_item($*free_text_text); print_box($*free_text_header, $text); } } 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 + """<div style="margin-top: 4px;"><strong>$l.title</strong></div>"""; } else { $links = $links + box_item("""<a href="$l.url">$l.title</a>"""); } } } print_box($*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="calactitem"><a href="$d.url">$d.day</a></td>"""; } else { $text = $text + """ <td class="calinitem">$d.day</td>"""; } } $text = $text + "</tr>\n"; } $text = $text + "</table>"; print_box($mon, $text); } function Page::lay_entry_nav (Entry e) : string { var string line; var string date; if($e.new_day) { $date = $e.time->date_format("short"); } var string time = $e.time->time_format(); 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) ? " : $e.journal " : ""; var string item = ($.view == "friends" or $e.journal.username != $e.poster.username) ? $e.poster->as_string() + """$j <a href="#item""" + $e.itemid + """\">""" : """<a href="#item""" + $e.itemid + """\"><strong>$date $time</strong>"""; $line = """<div class="columnitem">$item $subject</a></div>"""; return $line; } function Page::lay_print_summary () { #blank because there's shouldn't be a box if there's nothing specific about the page. } 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 + """<div style="margin-top: 4px;"><strong>+$count more</strong></div>"""; } print_box($*page_summary_title, $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 + """<div class="columnitem">$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 + """</div>"""; } $count = $count - 1; } if($text != "") { if($count < 0) { $count = $count * -1; $text = $text + """<div style="margin-top: 4px;"><strong>+$count more</strong></div>"""; } if($count != ($*summary_items - 1)) { print_box($*page_summary_title, $text); } } } function YearPage::lay_print_summary () { var int count = $*summary_items; if($count == 0) { return; } var string text; var int num_entries; foreach var YearMonth m ($.months) { if($count > 0) { var string mon = $m->month_format(); if($m.has_entries) { $num_entries = 0; foreach var YearWeek w ($m.weeks) { foreach var YearDay d ($w.days) { $num_entries = $num_entries + $d.num_entries; } } $text = $text + """<div class="columnitem"><a href="#anchor$m.month">$mon [$num_entries entries]</a></div>"""; } } $count = $count - 1; } if($text != "") { if($count < 0) { $count = $count * -1; $text = $text + """<div style="margin-top: 4px;"><strong>+$count more</strong></div>"""; } print_box($*page_summary_title, $text); } } function MonthPage::lay_print_summary () { var int count = $*summary_items; if($count == 0) { return; } var string text; foreach var MonthDay d ($.days) { if($count > 0) { var string day = lang_ordinal($d.day); if ($d.has_entries) { $text = $text + """<div class="columnitem"><a href="#anchor$d.day">$day [$d.num_entries entries]</a></div>"""; } } } if($text != "") { if($count < 0) { $count = $count * -1; $text = $text + """<div style="margin-top: 4px;"><strong>+$count more</strong></div>"""; } print_box($*page_summary_title, $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 + """<div style="margin-top: 4px;"><strong>+$count more</strong></div>"""; } print_box($*page_summary_title, $text); } } function Page::lay_print_subnav () { # } function RecentPage::lay_print_subnav () { var string back; if($.nav.backward_url != "") { $back = """<a href="$.nav.backward_url">$*text_back</a>"""; } else { $back = " "; } var string forward; if($.nav.forward_url != "") { $forward = """<a href="$.nav.forward_url">$*text_forward</a>"""; } else { $forward = " "; } var int start = $.nav.skip; var int end = $.nav.skip + size $.entries; var string text = "Viewing $start - $end"; """ <div class="messageholder"><div class="systemmessage"> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td width="15%">$back</td> <td width="70%" align="center">$text</td> <td width="15%" align="right">$forward</td> </tr> </table> </div></div> """; } function DayPage::lay_print_subnav () { var string back; if($.prev_url != "") { $back = """<a href="$.prev_url">$*text_back</a>"""; } else { $back = " "; } var string forward; if($.next_url != "") { $forward = """<a href="$.next_url">$*text_forward</a>"""; } else { $forward = " "; } var string text = $.date->date_format("long"); """ <div class="messageholder"><div class="systemmessage"> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td width="15%">$back</td> <td width="70%" align="center">$text</td> <td width="15%" align="right">$forward</td> </tr> </table> </div></div> """; } function Page::lay_print_sidebar () { $this->lay_print_summary(); $this->print_linklist(); $this->lay_print_freetext(); $this->lay_print_calendar(); } function Page::lay_make_username(Entry e) { """ <div class="entryinfo"> $e.poster </div> <div class="entrydivider"></div> """; } function FriendsPage::lay_make_username (Entry e) { var Friend f = $.friends{$e.journal.username}; var string url = $e.poster->base_url(); """ <div class="entryinfo"> <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"""; } """ </div> <div class="entrydivider"></div> """; } function Page::print_entry (Entry e) { print """<a name="item""" + $e.itemid + """\"></a>"""; var string time = $e.time->time_format(); var string date = $e.time->date_format(); 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 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; """ <div class="entry"> <div class="entrydivider"></div> """; if($show_pic) { """ <div class="userpic2"> <a href="$*SITEROOT/allpics.bml?user=$e.poster.username"><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" /></a> </div> """; } if($show_name) { $this->lay_make_username($e); } """ <div class="entryinfo">$security $date $time</div> <div class="entrydivider"></div> <div class="entrylinks"> """; $e.comments->print(); foreach var string key (["edit_entry","edit_tags","mem_add","tell_friend"]) { var Link link = $e->get_link($key); if ($link) { """<a href=\"$link.url\"> $link.caption </a>"""; } } """<a href="$e.permalink_url"> $*text_permalink </a> </div> <div class="entrytext"> <div class="subject">$e.subject</div> <p>$e.text</p> """; $e->print_metadata(); """ </div> </div> <div class="backtop"><a href="#top">back to top</a></div> """; } function CommentInfo::print() { if ($.enabled) { $this->print_postlink(); if ($.count > 0 or $.screened) { $this->print_readlink(); } } } function CommentInfo::print_postlink() { var Page p = get_page(); "<a href=\"$.post_url\"> "+($p.view == "friends" ? $*text_post_comment_friends : $*text_post_comment)+" </a>"; } function CommentInfo::print_readlink { var Page p = get_page(); "<a href=\"$.read_url\"> "+ get_plural_phrase($.count, $p.view == "friends" ? "text_read_comments_friends" : "text_read_comments")+ " </a>"; } ################################################################################ # # EntryPage and Comments # function EntryPage::print_body() { """<div class="entries">"""; $this->print_entry($.entry); if ($this.multiform_on) { $this->print_multiform_start(); } if ($.entry.comments.count > 0) { """ <div class="messageholder"><div class="systemmessage"><div class="notablemessage "><b>Comments</b></div></div></div> """; } if ($.comment_pages.total_subitems > 0) { $.comment_pages->print(); } if ($.entry.comments.enabled) { $this->print_comments($.comments); } if ($.entry.comments.count > 0) { """ <div class="messageholder"> <div class="systemmessage"> <div class="notablemessage "> """; $.entry.comments->print(); """ </div> </div> </div> """; } if ($.comment_pages.total_subitems > 0) { $.comment_pages->print(); } if ($this.multiform_on and ($.entry.comments.count > 0)) { """ <div class="messageholder"> <div class="systemmessage"> <div class="notablemessage "> <div class="multiform"> """; $this->print_multiform_actionline(); """ </div> </div> </div> </div> """; $this->print_multiform_end(); } """</div>"""; } 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()+", " + $c.time->time_format(); var string parent; var string thread; if($c.parent_url != "") { $parent = """<a href="$c.parent_url"> $*text_comment_parent </a>"""; } if($c.thread_url != "") { $thread = """<a href="$c.thread_url"> $*text_comment_thread </a>"""; } 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>(Anonymous)</b>"; var string pic; if (defined $c.userpic and $*comment_userpic_style != "off") { $pic = """<div class="userpic2"><img src="$c.userpic.url" width="$c.userpic.width" height="$c.userpic.height" alt="" /></div>"""; } var string indent = ($c.depth - 1) * 25 + "px"; """ <div id='$c.dom_id'> <a name='$c.anchor'></a> $pic <div class="entry" style="margin-left: $indent;"> <div class="entrydivider"></div> <div class="postedby">$poster <span class="ip">$ip</span></div> <div class="entrydivider"></div> <div class="entryinfo">$subjecticon $datetime</div> <div class="entrydivider"></div> """; if ($.multiform_on) { """<div class="entryinfo"><label for="ljcomsel_$c.talkid">$*text_multiform_check</label> """; $c->print_multiform_check(); """</div> <div class="entrydivider"></div> """; } var string replyurl; if ($c.frozen) { $replyurl = """<a href="javascript://"> $*text_comment_frozen </a>"""; } else { $replyurl = """<a href="$c.reply_url"> $*text_comment_reply </a>"""; } """ <div class="entrylinks"> $replyurl """; # some links for doing stuff to this comment foreach var string k ($c.link_keyseq) { var Link link = $c->get_link($k); if ($link) { """<a href=\"$link.url\"> $link.caption </a>"""; } } """ <a href="$c.permalink_url"> $*text_permalink </a>$parent$thread </div> <div class="entrytext"> <div class="subject">$c.subject</div> <p>$c.text</p> </div> """; if ((size $c.replies) > 0 and $c.replies[0].full == false) { """<div style="margin-top: 5px; margin-bottom: 5px; clear: both;">\n"""; $this->print_comments($c.replies); "</div>\n"; } """ </div> <div class="backtop"><a href="#top">back to top</a></div> </div> """; if ((size $c.replies) > 0 and $c.replies[0].full == true) { $this->print_comments($c.replies); } } function EntryPage::print_comment_partial(Comment c) { var string poster = defined $c.poster ? $c.poster->as_string() : "<i>(Anonymous)</i>"; var string subj = $c.subject != "" ? $c.subject : """<i class="nosubject">$*text_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="messageholder"><div class="systemmessage"><div class="notablemessage "> <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></div></div>"""; } ################################################################################ # # ReplyPage # function ReplyPage::print_body() { var EntryLite e = $.replyto; var string poster = defined $e.poster ? $e.poster->as_string() : "<i>(Anonymous)</i>"; var string datetime; var string time = $e.time->time_format(); var string date = $e.time->date_format(); var UserLite name; if(defined $e.userpic and $*comment_userpic_style != "off") { $name = $e.poster; """<div class="userpic2">"""; 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>"""; } """ <div class="entry"> <div class="entrydivider"></div> <div class="entryinfo">$name</div> <div class="entrydivider"></div> <div class="entryinfo">$time $date</div> <div class="entrydivider"></div> <div class="entrylinks"> <a href="$.entry.comments.read_url" class="comments">$*text_reply_back</a>"""; foreach var string key (["edit_entry","mem_add","tell_friend"]) { var Link link = $e->get_link($key); if ($link) { """<a href=\"$link.url\">$link.caption</a>"""; } } """<a href="$e.permalink_url">$*text_permalink</a> </div> """; """ <div class="entrytext"> <div class="subject">$e.subject</div> <p>$e.text</p> </div> <div class="messageholder"><div class="systemmessage"> """; $.form->print(); """ </div></div> """; } function Entry::print_metadata() { var string caption; var string val; var Image i; if ($this.tags) { """<div class="meta">"""; print $this->get_tags_text(); "</div>"; } if (size $.metadata == 0) { return; } foreach var string k ($.metadata) { $caption = $k; $val = $.metadata{$k}; if ($k == "music") { $caption = $*text_meta_music; } elseif ($k == "mood") { $caption = $*text_meta_mood; if (defined $.mood_icon) { $i = $.mood_icon; $val = """<img src="$i.url" width="$i.width" height="$i.height" alt="$val" title="$val" /> $val"""; } } println """<div class="meta">$caption: $val</div>"""; } } ################################################################################ # # RecentPage # function RecentPage::print_body () { """ <div class="entries"> """; foreach var Entry e ($.entries) { $this->print_entry($e); } """ </div> """; } ################################################################################ # # YearPage # 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="messageholder"><div class="systemmessage"><div class="notablemessage">"""; foreach var YearYear y ($.years) { if ($y.displayed) { """<b class="systemtext">$y.year</b>"""; } else { """<b><a href="$y.url"> $y.year </a></b>"""; } } """</div></div></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="entrydivider"></div> <div class="entrylinks"><a href="$m.url"> $*text_view_month </a></div> <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> <div class="backtop"><a href="#top">back to top</a></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="bigday">$day</div> """; if ($d.num_entries > 0) { var string num = $d.num_entries < 10 ? " " + string($d.num_entries) : string($d.num_entries); """ <div class="calactitem"><a href="$d.url">$num</a></div> """; } """ </td> """; } """ </tr> """; } ################################################################################ # # MonthPage # 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">$*text_back</a>"""; } if ($.next_url != "") { $forward = """<a href="$.next_url">$*text_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> <div class="backtop"><a href="#top">back to top</a></div> """; } } } function MonthDay::print_subjectlist() { # Too many tables... foreach var Entry e ($.entries) { print $e.time->time_format("short") + ": "; if ($e.poster.username != $e.journal.username) { $e.poster->print(); " "; } "$e.security_icon"; if ($e.subject != "") { " <a href=\"$e.permalink_url\">$e.subject</a>"; } else { """ <a href="$e.permalink_url"><i class="nosubject">$*text_nosubject</i></a>"""; } if ($e.comments.count > 0) { " - " + get_plural_phrase($e.comments.count, "text_read_comments"); } if ($e.comments.screened) { " <b>$*text_month_screened_comments</b>"; } "<br />\n"; } } ################################################################################ # # DayPage # function DayPage::print_body() { """<div class="entries">"""; if ($.has_entries) { foreach var Entry e ($.entries) { $this->print_entry($e); } } else { "<p>$*text_noentries_day</p>"; } """</div>"""; } ################################################################################ # # Page # 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"> <head> <title>$title</title> <link rel="stylesheet" href="$.stylesheet_url" type="text/css" /> """; $this->print_head(); """ </head> <body> <a name="top"></a> <table cellspacing="0" cellpadding="0" border="0" width="100%"> <tr> <td> <div class="border3"> <div class="border2"> <div id="bodycontent"> """; $this->lay_print_userpic(); $this->lay_print_username(); $this->lay_print_header(); """ <div id="content"> <table cellspacing="10" cellpadding="0" border="0"> <tr> <td valign="top" class="sidetd"> <div id="sidecolumn"> """; $this->lay_print_sidebar(); """ </div> </td> <td valign="top" width="100%"> """; $this->lay_print_subnav(); $this->print_body(); $this->lay_print_subnav(); """ </td> </tr> </table> </div> </div> </div> </div> </td> </tr> </table> </body> </html> """; } function print_theme_preview() { var Color color_bg_lt = getAltColor($*color_bg, "light", 30); var Color color_fg_dk = getAltColor($*color_fg, "dark", 20); var Color color_fg_dk_font = getAltColor($*color_fg_font, "dark", 20); var Color color_divider = getAltColor($color_fg_dk, "dark", 30); var Color color_fg_dk_dk_font = getAltColor($color_fg_dk, "dark", 50); var Color color_border = getAltColor($*color_bg, "light", 90); """ <div style="background-color: $*color_fg; border: 1px solid $color_fg_dk; padding: 4px; width: 210px;"> <div style="border-top: 1px solid $color_divider; border-bottom: 1px solid $*color_fg;"></div> <div style="background-color: $color_fg_dk; font-size: $*static_font_size$*static_font_measurement; padding: 4px; width: 200px;">Username - Title</div> <div style="border-top: 1px solid $color_divider; border-bottom: 1px solid $*color_fg;"></div> <br /> <div style="border: 1px solid $*color_bg; width: 200px;"><div style="border: 1px solid $*color_fg;"><div style="border: 2px solid $color_border;"> <div style="background-color: $color_bg_lt; border: 1px solid $*color_bg; padding: 3px; font-size: $*static_font_size$*static_font_measurement; color: $*color_bg_font;"> <strong>Welcome</strong> <div style="background-color: $color_fg_dk; padding: 3px; margin-top: 5px; color: $*color_fg_font; border-top: 1px solid $color_divider; border-bottom: 1px solid $color_divider;">This is my new journal using a cool new style!</div> </div></div></div></div> </div> """; }