layerinfo type = "layout"; layerinfo name = "Database"; layerinfo redist_uniq = "database/layout"; layerinfo author_name = "ninetydegrees"; layerinfo lang = "en"; set layout_authors = [ { "name" => "ninetydegrees", "type" => "user" } ]; set layout_resources = [ { "name" => "Cyreal's font", "url" => "http://www.google.com/webfonts" } ]; ##=============================== ## Presentation ##=============================== propgroup presentation_child { property string post_title_align { des = "Content title alignment"; values = "left|Left|right|Right"; } property string post_text_align { des = "Content text alignment"; values = "left|Left|justify|Justify"; } property string entry_interaction_links { des = "Select whether entry interaction links are printed as text or using the available icons"; values = "icons|icons|text|text-only|"; } property string comment_interaction_links { des = "Select whether comment interaction links are printed as text or using the available icons"; values = "icons|icons|text|text-only|"; } property bool default_icons { des = "Replace custom icons with default ones"; note = "Text will be used instead when there are no default icons."; } } set layout_type = "two-columns-right"; set entry_date_format = "iso"; set entry_time_format = "short_24"; set comment_date_format = "iso"; set comment_time_format = "short_24"; set custom_colors_template = "%%new%% .entrybox-wrapper { border: 2px solid %%background%%; } %%new%% .entry-title { margin-bottom: .5em; } %%new%% .entry-title a { background-color: %%background%%; color: %%foreground%%; border-radius: .6em; padding: .2em; }"; set userlite_interaction_links = "text"; set entry_interaction_links = "icons"; set comment_interaction_links = "icons"; set all_commentsubjects = true; set post_title_align = "right"; set post_text_align = "justify"; set default_icons = false; set custom_control_strip_colors = "on_no_gradient"; ##=============================== ## Colors ##=============================== propgroup colors_child { property Color color_page_title_shadow { des = "Page title shadow color"; } property Color color_userpic_shadow { des = "Userpic shadow color"; } property Color color_elements_border { des = "Misc. elements border color"; } property Color color_entry_title_shadow { des = "Entry title shadow color"; } property Color color_comment_title_shadow { des = "Comment title shadow color"; } property Color color_calendar_header_background { des = "Calendar header background color"; } property Color color_calendar_header_text { des = "Calendar header color"; } property Color color_calendar_background { des = "Calendar background color"; } property Color color_calendar_link { des = "Calendar link color"; } property Color color_calendar_background_active { des = "Calendar active background color"; } property Color color_calendar_link_active { des = "Calendar active link color"; } property Color color_calendar_background_hover { des = "Calendar hover background color"; } property Color color_calendar_link_hover { des = "Calendar hover link color"; } property Color color_calendar_background_visited { des = "Calendar visited background color"; } property Color color_calendar_link_visited { des = "Calendar visited link color"; } property Color color_module_title_shadow { des = "Module title shadow color"; } # Used instead of color_header_link: property Color color_module_header_background { des = "Page header module link background color"; } property Color color_module_header_link { des = "Page header link color"; } property Color color_module_header_background_active { des = "Page header active link background color"; } property Color color_module_header_link_active { des = "Page header active link color"; } property Color color_module_header_background_hover { des = "Page header hover link background color"; } property Color color_module_header_link_hover { des = "Page header hover link color"; } property Color color_module_header_background_visited { des = "Page header visited link background color"; } property Color color_module_header_link_visited { des = "Page header visited link color"; } property Color color_module_header_border { des = "Page header border color"; } property Color color_module_calendar_header_background { des = "Calendar module header background color"; } property Color color_module_calendar_header_text { des = "Calendar module header color"; } property Color color_module_calendar_background { des = "Calendar module background color"; } property Color color_module_calendar_link { des = "Calendar module link color"; } property Color color_module_calendar_background_active { des = "Calendar module active background color"; } property Color color_module_calendar_link_active { des = "Calendar module active link color"; } property Color color_module_calendar_background_hover { des = "Calendar module hover background color"; } property Color color_module_calendar_link_hover { des = "Calendar modules hover link color"; } property Color color_module_calendar_background_visited { des = "Calendar module visited background color"; } property Color color_module_calendar_link_visited { des = "Calendar module visited link color"; } } ##=============================== ## Fonts ##=============================== propgroup fonts_child { property use font_sources; } set font_sources = "https://fonts.googleapis.com/css?family=Iceland"; set font_base = "Iceland, 'Courier New'"; set font_fallback = "monospace"; set font_base_size = "1.3"; set font_base_units = "em"; set font_journal_title_size = "2.5"; set font_journal_title_units ="em"; set font_journal_subtitle_size = "1.1"; set font_journal_subtitle_units = "em"; set font_entry_title_size = "1.25"; set font_entry_title_units ="em"; set font_comment_title_size = "1.25"; set font_comment_title_units ="em"; set font_module_heading_size = "1.25"; set font_module_heading_units = "em"; ##=============================== ## Images ##=============================== propgroup images_child { property string[] image_background_footer_group { des = "Footer background image"; grouptype = "image"; } set image_background_footer_group = [ "image_background_footer_url", "image_background_footer_repeat", "image_background_footer_position" ]; property string image_background_footer_url { grouped = 1; } property string image_background_footer_repeat { values = "repeat|tile image|no-repeat|don't tile|repeat-x|tile horizontally|repeat-y|tile vertically"; grouped = 1; } property string image_background_footer_position { values = "top left|top left|top center|top center|top right|top right|center left|center left|center center|center|center right|center right|bottom left|bottom left|bottom center|bottom center|bottom right|bottom right"; grouped = 1; } property int image_background_footer_height { des = "The height of your footer image, in pixels. Use 0 for default."; example = "50"; size = 6; } property string[] image_background_blockquote_group { des = "Blockquote background image"; grouptype = "image"; } set image_background_blockquote_group = [ "image_background_blockquote_url", "image_background_blockquote_repeat", "image_background_blockquote_position" ]; property string image_background_blockquote_url { grouped = 1; } property string image_background_blockquote_repeat { values = "repeat|tile image|no-repeat|don't tile|repeat-x|tile horizontally|repeat-y|tile vertically"; grouped = 1; } property string image_background_blockquote_position { values = "top left|top left|top center|top center|top right|top right|center left|center left|center center|center|center right|center right|bottom left|bottom left|bottom center|bottom center|bottom right|bottom right"; grouped = 1; allow_other = 1; } property int image_background_blockquote_width { des = "The width of your blockquote image, in pixels. Use 0 for default."; example = "50"; size = 6; } property string image_addmemories { des = "Add to memories icon"; noui = 1; } property string image_comments { des = "Read comments icon"; noui = 1; } property string image_delete { des = "Delete item icon"; noui = 1; } property string image_edit { des = "Post or edit item icon"; noui = 1; } property string image_edittags { des = "Edit tags icon"; noui = 1; } property string image_expand { des = "Expand thread icon"; noui = 1; } property string image_freeze { des = "Freeze comment icon"; noui = 1; } property string image_hide { des = "Hide comments icon"; noui = 1; } property string image_giveaccess { des = "Give access icon"; noui = 1; } property string image_join { des = "Join community icon"; noui = 1; } property string image_link { des = "Post link icon"; noui = 1; } property string image_maxcomments { des = "Maximum comments icon"; noui = 1; } property string image_message { des = "Send a Private Message icon"; noui = 1; } property string image_next { des = "Next entry icon"; noui = 1; } property string image_parent { des = "Parent comment icon"; noui = 1; } property string image_prev { des = "Previous entry icon"; noui = 1; } property string image_reply { des = "Reply to post icon"; noui = 1; } property string image_screen { des = "Screen comment icon"; noui = 1; } property string image_show { des = "Show comments icon"; noui = 1; } property string image_subscribe { des = "Subscribe to journal icon"; noui = 1; } property string image_tellafriend { des = "Tell a friend icon"; noui = 1; } property string image_thread { des = "Comment thread icon"; noui = 1; } property string image_threadroot { des = "Root comment icon"; noui = 1; } property string image_track { des = "Track item icon"; noui = 1; } property string image_tracked { des = "Tracked item icon"; noui = 1; } property string image_unfreeze { des = "Unfreeze comment icon"; noui = 1; } property string image_unscreen { des = "Unscreen comment icon"; noui = 1; } } ##=============================== ## Modules ##=============================== propgroup modules_child { property string module_navlinks_section_override { values = "none|(none)|header|Header|one|Main Module Section|two|Secondary Module Section"; grouped = 1; } property string module_time_section_override { values = "none|(none)|one|Main Module Section|two|Secondary Module Section|footer|Footer"; grouped = 1; } property string module_poweredby_section_override { values = "none|(none)|one|Main Module Section|two|Secondary Module Section|footer|Footer"; grouped = 1; } } set grouped_property_override = { "module_navlinks_section" => "module_navlinks_section_override", "module_time_section" => "module_time_section_override", "module_poweredby_section" => "module_poweredby_section_override" }; set module_navlinks_section = "header"; set module_pagesummary_order = 6; set module_tags_order = 7; set module_search_order = 8; set module_customtext_order = 9; set module_customtext_section = "two"; set module_active_order = 10; set module_active_section = "two"; set module_links_order = 11; set module_links_section = "two"; set module_syndicate_order = 12; set module_syndicate_section = "two"; set module_credit_order = 13; set module_credit_section = "two"; set module_time_order = 19; set module_time_section = "footer"; set module_poweredby_order = 20; set module_poweredby_section = "footer"; set module_tags_opts_type = "multi"; ##=============================== ## Text ##=============================== set text_default_separator = " ◾ "; set text_posting_in = " in "; set text_meta_music = "◾ Current Music:"; set text_meta_mood = "◾ Current Mood:"; set text_meta_location = "◾ Current Location:"; set text_meta_groups = "◾ Custom Access Groups:"; set text_meta_xpost = "▪ Crossposts:"; set text_tags = "◾ Tags:"; set text_comment_from = "Posted by:"; set text_comment_date = "Date/Time:"; set text_comment_ipaddr = "◾ IP:"; set text_entry_prev = "Previous"; set text_entry_next = "Next"; set text_tell_friend = "Share"; set text_mem_add = "Memory"; set text_generated_on = "Page generated on"; set text_page_top = "Top of Page"; set text_read_comments_screened_visible = "1 visible comment // # visible comments"; ##=============================== ## Functions ##=============================== ## Use default or custom icons for action links depending on setting ## If action doesn't have a default icon, use text instead function prop_init () { $*image_addmemories = $*default_icons ? "$*IMGDIR/silk/entry/memories_add.png" : generate_image_url($*image_addmemories); $*image_comments = $*default_icons ? "" : generate_image_url($*image_comments); $*image_delete = $*default_icons ? "$*IMGDIR/silk/comments/delete.png" : generate_image_url($*image_delete); $*image_edit = $*default_icons ? "$*IMGDIR/silk/entry/edit.png" : generate_image_url($*image_edit); $*image_edittags = $*default_icons ? "$*IMGDIR/silk/entry/tag_edit.png" : generate_image_url($*image_edittags); $*image_expand = $*default_icons ? "" : generate_image_url($*image_expand); $*image_freeze = $*default_icons ? "$*IMGDIR/silk/comments/freeze.png" : generate_image_url($*image_freeze); $*image_giveaccess = $*default_icons ? "$*IMGDIR/silk/profile/access_give.png" : generate_image_url($*image_giveaccess); $*image_hide = $*default_icons ? "" : generate_image_url($*image_hide); $*image_join = $*default_icons ? "$*IMGDIR/silk/profile/community_join.png" : generate_image_url($*image_join); $*image_link = $*default_icons ? "" : generate_image_url($*image_link); $*image_maxcomments = $*default_icons ? "" : generate_image_url($*image_maxcomments); $*image_message = $*default_icons ? "$*IMGDIR/silk/profile/message.png" : generate_image_url($*image_message); $*image_next = $*default_icons ? "$*IMGDIR/silk/entry/next.png" : generate_image_url($*image_next); $*image_parent = $*default_icons ? "" : generate_image_url($*image_parent); $*image_prev = $*default_icons ? "$*IMGDIR/silk/entry/previous.png" : generate_image_url($*image_prev); $*image_reply = $*default_icons ? "" : generate_image_url($*image_reply); $*image_tellafriend = $*default_icons ? "$*IMGDIR/silk/entry/tellafriend.png" : generate_image_url($*image_tellafriend); $*image_thread = $*default_icons ? "" : generate_image_url($*image_thread); $*image_threadroot = $*default_icons ? "" : generate_image_url($*image_threadroot); $*image_track = $*default_icons ? "$*IMGDIR/silk/entry/track.png" : generate_image_url($*image_track); $*image_tracked = $*default_icons ? "$*IMGDIR/silk/entry/untrack.png" : generate_image_url($*image_tracked); $*image_screen = $*default_icons ? "$*IMGDIR/silk/comments/screen.png" : generate_image_url($*image_screen); $*image_show = $*default_icons ? "" : generate_image_url($*image_show); $*image_subscribe = $*default_icons ? "$*IMGDIR/silk/profile/subscription_add.png" : generate_image_url($*image_subscribe); $*image_unfreeze = $*default_icons ? "$*IMGDIR/silk/comments/unfreeze.png" : generate_image_url($*image_unfreeze); $*image_unscreen = $*default_icons ? "$*IMGDIR/silk/comments/unscreen.png" : generate_image_url($*image_unscreen); $*entry_interaction_links = $*default_icons ? "text" : $*entry_interaction_links; $*comment_interaction_links = $*default_icons ? "text" : $*comment_interaction_links; } ## Add title to Nav module when not in header position. function print_module_navlinks() { var Page p = get_page(); var string title = ($*module_navlinks_section == "header") ? "" : "Navigation"; open_module("navlinks", $title, ""); var string{}[] links = []; foreach var string k ($p.views_order) { var string class = $k; if ($p.view == $k) { $class = "current $k"; } $links[size $links] = { "class" => $class, "item" => """"""+lang_viewname($k)+"""""" }; } print_module_list($links); close_module(); } ## Print security and warnings as text. function Entry::print_metatypes() { $this->print_metatypes(false, true); } ## Replace profile interaction link icons. function UserLite::print_interaction_links() { var string{} interaction_icons = { "manage_membership" => $*image_join, "trust" => $*image_giveaccess, "watch" => $*image_subscribe, "post_entry" => $*image_edit, "message" => $*image_message, "track" => $*image_track, "tell_friend" => $*image_tellafriend, }; var string display_type = ($*userlite_interaction_links == "text") ? " text-links" : " icon-links"; var Link link; var string icon_url; var int count; $count = 0; foreach var string k ($.link_keyseq) { $link = $this->get_link($k); $icon_url = $interaction_icons{$k}; if ($link.url) { $count ++; if ($count == 1) { """
"""; } if ($*comment_management_links == "text") { foreach var string extra ( $link.extra ) { var string value = $link.extra{$extra}; $extras = $extras + "$extra='$value' "; } """- $link.caption
\n""";
}
else {
"""
""";
}
}
}
if ($count > 0) {
"""
"""; } } function Comment::print_interaction_links() { var string display_type = ($*comment_interaction_links == "text") ? " text-links" : " icon-links"; """"""; if ($*comment_interaction_links == "text") { print safe """- $*text_comment_link
\n""";
} else {
print safe """
""";
}
if ($this.frozen) {
if ($*comment_interaction_links == "text") {
print safe """- $*text_comment_frozen
\n""";
} else {
print safe """
""";
}
} else {
"""- """;
if ($*comment_interaction_links == "text") {
$this->print_reply_link({"linktext" => $*text_comment_reply});
} else {
$this->print_reply_link({ "img_url" => $*image_reply, "alt" => $*text_comment_reply, "title" => $*text_comment_reply });
}
"""
""";
}
if ($this.threadroot_url != "") {
if ($*comment_interaction_links == "text") {
print safe """- $*text_comment_threadroot
\n""";
} else {
print safe """
""";
}
}
if ($this.parent_url != "") {
if ($*comment_interaction_links == "text") {
print safe """- $*text_comment_parent
\n""";
} else {
print safe """
""";
}
}
if ($this.thread_url != "") {
if ($*comment_interaction_links == "text") {
print safe """- $*text_comment_thread
\n""";
} else {
print safe """
""";
}
}
var Link expand_link = $this->get_link("expand_comments");
if (defined $expand_link) {
"""- """;
if ($*comment_interaction_links == "text") {
$this->print_expand_link();
} else {
$this->print_expand_link({ "img_url" => $*image_expand, "alt" => $*text_comment_expand, "title" => $*text_comment_expand });
}
"""
""";
}
var Link hide_link = $this->get_link("hide_comments");
if (defined $hide_link) {
var string show_hide = "";
if (not $this.hide_children) {
$show_hide = " cmt_show_hide_default";
}
"""\n""";
}
var Link unhide_link = $this->get_link("unhide_comments");
if (defined $unhide_link) {
var string show_hide = "";
"""- """;
if ($*comment_interaction_links == "text") {
$this->print_unhide_link();
} else {
$this->print_unhide_link({ "img_url" => $*image_show, "alt" => $*text_comment_unhide, "title" => $*text_comment_unhide });
}
"""
\n""";
}
"""
"""; } function EntryPage::print_comment_partial (Comment c) { $c->print_wrapper_start(); if ($c.deleted) { print $*text_deleted; if ($c.hide_children) { var Link expand_link = $c->get_link("expand_comments"); if (defined $expand_link) { print " ("; $c->print_expand_link(); print ")"; } } } elseif ($c.fromsuspended) { print $*text_fromsuspended; if ($c.hide_children) { var Link expand_link = $c->get_link("expand_comments"); if (defined $expand_link) { print " ("; $c->print_expand_link(); print ")"; } } } elseif ($c.screened_noshow) { print $*text_screened; if ($c.hide_children) { var Link expand_link = $c->get_link("expand_comments"); if (defined $expand_link) { print " ("; $c->print_expand_link(); print ")"; } } } else { var string poster = defined $c.poster ? $c.poster->as_string() : "$*text_poster_anonymous"; $c->print_subject(); $c->print_poster(); " - "; $c->print_time(); var Link expand_link = $c->get_link("expand_comments"); if (defined $expand_link) { if ($*comment_interaction_links == "text") { " "; $c->print_expand_link(); ""; } else { " "; $c->print_expand_link({ "img_url" => "$*image_expand", "class" => "partial-expand-link icon-links" }); } } } if ( $c.comment_posted ) { print safe "$*text_comment_posted"; } $c->print_wrapper_end(); } ## Print character between years ## Add span for styling function YearPage::print_year_links() { if (size $.years) { """\n"""; foreach var YearYear y ($.years) { if ($y.displayed) { """- $y.year $*text_default_separator
\n""";
} else {
"""- $y.year $*text_default_separator
\n""";
}
}
"""
\n"""; } } ## Reorganize posts: ## Move time and poster above metatypes ## Separate the header from everything else so it can wrap correctly ## Create a new wrapping DIV to style the rest of the post ## Wrap time, poster and metatypes in a new DIV to let the user pic float besides them ## Move tags to contents for spacing issues function Page::print_entry(Entry e) { $e->print_wrapper_start(); """$month_label
$*text_tags_page_header
"; "$*text_icons_page_header
"; "\n"""; var int sort_ct = 0; foreach var string k ($.sort_keyseq) { var string text = lang_icon_sortorder_title($k); if ( $k == $.sortorder ) { print safe """- $text""";
} else {
print safe """
- $text""";
}
if ( (++$sort_ct) < size $.sort_keyseq) { print $*text_default_separator; }
"
\n";
}
"
\n$*text_default_separator""" + $.global_subtitle + """
"""; } } function FriendsPage::print_global_subtitle(){ if ($.friends_subtitle){ """$*text_default_separator""" + $.friends_subtitle + """
"""; } elseif ($.friends_title) { } elseif ($.global_subtitle) { """$*text_default_separator""" + $.global_subtitle + """
"""; } } function Page::view_title() [notags] : string { return $*text_default_separator + lang_viewname($.view); } function RecentPage::view_title() : string { if ($.filter_active) { if ($.filter_tags) { return $*text_default_separator + $*text_view_recent_tagged + $.filter_name; } else { return $*text_default_separator + "(" + $.filter_name + ")"; } } else { return $*text_default_separator + $*text_view_recent; } } function FriendsPage::view_title() : string { if ($.friends_mode == "") { if ($.filter_active) { if ($.filter_name != "") { return $*text_default_separator + $*text_view_friends+" ("+$.filter_name+")"; } else { return $*text_default_separator + $*text_view_friends_filter; } } else { if ($.journal.journal_type == "C") { return $*text_default_separator + $*text_view_friends_comm; } else { return $*text_default_separator + $*text_view_friends; } } } elseif ($.friends_mode == "network") { if ($.filter_active) { if ($.filter_name != "") { return $*text_default_separator + $*text_view_network+" ("+$.filter_name+")"; } else { return $*text_default_separator + $*text_view_network_filter; } } else { return $*text_default_separator + $*text_view_network; } } else { return $*text_default_separator + "Unknown Friends View"; } } function DayPage::view_title : string { return $*text_default_separator + $.date->date_format($*entry_date_format); } function MonthPage::view_title : string { return $*text_default_separator + $.date->date_format($*lang_fmt_month_long); } function YearPage::view_title() : string { return $*text_default_separator + string($.year); } function EntryPage::view_title() : string { return $*text_default_separator + ($.entry.subject ? $.entry->get_plain_subject() : $*text_nosubject); } function ReplyPage::view_title() : string { if ($.replyto isa Comment) { var Comment c = $.replyto as Comment; var string suffix = $.isedit ? " (" + $*text_edit_comment_title + ")" : " (" + $*text_new_comment_title + ")"; return $*text_default_separator + $c->get_plain_subject() + $suffix; } else { var Entry e = $.replyto as Entry; return $*text_default_separator + $e.subject ? $e->get_plain_subject() + " (" + $*text_comment_reply + ")" : $*text_nosubject + " (" + $*text_comment_reply + ")"; } } function Page::title() [notags] : string { return $*text_default_separator + $this->view_title(); } ## Add header and footer sections ## Create new divs for journal header ## Make tertiary go to footer in one-column and two-column modes ## Add separator before page-top function Page::print() { """\n\n\n"""; $this->print_meta_tags(); $this->print_head(); $this->print_stylesheets(); $this->print_head_title(); """"""; $this->print_wrapper_start(); $this->print_control_strip(); """