[show modes: view edit blog message] [begin preamble] if(title2id(_title) != _id) _bestlink = {id=[_id]} else if(strcount(_title, "&")) _bestlink = {id=[_id]} else _bestlink = urlencode(_title); override_title(_title, info_display(_subtitle)); if(substr(getv("twitter"), 0, 1) == "@") {[ mute putv("twitter", substr(getv("twitter"), 1, -1)); keep_date(); ]}; $avpath = getv("avpath"); if(strpos($avpath, "gravatar.com") >= 0) {[ $avpath = "/pictures/default-avatar.png"; mute putv("avpath", $avpath); keep_date(); ]} else if($avpath == "") {[ $relpath = {/avatars/[_author].jpg}; if(not(file_exists($_globals.VROOT & $relpath))) {[ $avpath = "/pictures/default-avatar.png"; ]} else $avpath = {/pictures[$relpath]}; mute putv("avpath", $avpath); keep_date(); ]}; [end preamble] [begin mode post_bg][ $avpath = getv("avpath"); if(getv("big-avatar") == 1) if(substr($avpath, 0, 1) == "/") {<div class="profile_full_bg post_bg_[_id]" style="[if(getu("dark-theme") == 1) {opacity: 0.1} else {opacity: 0.15}]"><img style="visibility: hidden; width: 100%;" src="[$avpath]_blurred.jpg"> </div><style type="text/css"> #post_[_args.0] blockquote, #post_[_args.0] .mbox_parent { [ if(getu("dark-theme") == 1) { background: rgba(56, 56, 56, 0.5); } else { background: rgba(255, 255, 255, 0.5); } ] } .post_bg_[_id] { background-size: 100%; background-repeat: repeat-x, no-repeat; background-position: bottom left, 0 0; background-size: 64px 256px, cover; [ if(getu("dark-theme") == 1) { background-image: url('/theme/dark-grad.png'), url('[$avpath]_blurred.jpg'); } else { background-image: url('/theme/light-grad.png'), url('[$avpath]_blurred.jpg'); } ] } </style>}; ][end mode post_bg] [begin mode message] [if(_viewer.id == 0) return {Sorry! Please <a href="/registration.star">register</a> or <a href="/log_io.star">log in</a> first.}; msg_start()] <b>Send Message</b> <form method="post" action="/"> <input type="hidden" name="id" value="[_id]"> <input type="hidden" name="mode" value="message_submit"> <table style="width: 100%"> <tr><th>Subject:<td><input type="text" name="title" style="width: 100%"> <tr><th style="width: 100px">Message:<td><textarea name="msg" style="width: 100%"></textarea> <tr><td><td><input type="submit" value="Send"> </table> [msg_end()] [end mode message] [begin mode message_submit] [ if(_viewer.id == 0) return {Sorry! Please <a href="/registration.star">register</a> or <a href="/log_io.star">log in</a> first.}; if(_params.msg != "") {[ msg = _emoticons(_wiki_format("[b]Message from [http://anthologi.ca/?id=" &_viewer.profile_id & "|" & _viewer.name & "][/b]" & chr(10) & _params.msg, "no toc"), _viewer.id); recipient = _author; if(_post_message(recipient, msg, _viewer.id, $_params.title & " (" & now() & ")") == 1) msg({[refresh_to({./?Messages}, 1)] <b>Success</b>! Your message was sent to [uid2name(recipient)]. }) else msg({ <b>Failure</b>! Message could not be sent to [uid2name(recipient)]. }); ] <p><a href="/?[_bestlink]">Return to [_title]</a><br> <a href="/?Messages">Return to Messages</a></p> }; ] [end mode message_submit] [begin mode select][_author]<!>[_title] [end mode select] [begin mode update][ _date = _args[0]; ][end mode update] [begin mode edit] [ $_title = $_owner.name; ] <form method="post" action="/" width="100%"> <input type="hidden" name="id" value="[$_id]"> <input type="hidden" name="mode" value="submit"> <table width="100%"> <tr><th valign="top">Login Info: <td><a href="/lists.star?mode=edit_user&id=[_author]">Click here to change your username or password.</a> You will have to log in again afterwards. <tr><th width="20%">Personal Title:</th><td> <input type="text" class="textbox" name="subtitle" value="[edit_display($_subtitle);]" style="width: 100%"><br> <small>Limit 30 characters. Blame <a href="/?Nortaneous">Nortaneous</a>.</small> </td></tr> <tr><th width="20%">Avatar:</th> <td>[page("icon", $_id)]<br><a href="./?id=[$_id]&mode=picture" target="_blank">Click here to update your avatar.</a><br> <small><b>If you see an image but have not uploaded an avatar</b>, it was obtained from <a href="http://gravatar.com">Gravatar</a> using your e-mail address, back when that was a thing.</td></tr> <tr><th valign="top">E-mail: <td><input type="text" name="email" value="[getva("email", get_extended(_author))]"><br> <small>This will not be shown publicly. See <a href="/?Settings">Settings</a> for information on setting up Reply-To for email notifications.</small> <tr><th width="20%">Twitter:</th><td> <input type="text" class="textbox" name="twitter" value="[edit_display(getv("twitter"));]" style="width: 100%"> </td></tr> <tr><th>Synopsis:</th><td> <textarea name="brief" rows="15" class="textbox">[edit_display(getv("brief"))]</textarea> <tr><th>Biography:</th><td> <textarea name="bio" rows="15" class="textbox">[edit_display(getv("bio"))]</textarea> <tr><th valign="top">Blog Name: <td><input type="text" name="blog_title" value="[edit_display(getv("blog_title"))]"><br> <tr><th valign="top">Blog URL: <td><input type="text" name="blog_url" value="[edit_display(getv("blog_url"))]"><br> <tr><th valign="top">Blog RSS: <td><input type="text" name="blog_rss" value="[edit_display(getv("blog_rss"))]"><br> Input the URL to a blog's front page and RSS feed to use it for your profile. <a href="http://tumblr.com">Tumblr</a> and <a href="http://wordpress.com">Wordpress</a> blogs have been confirmed to work properly. If you prefer, however, you may leave this blank and use a built-in Cadre blog. A Cadre blog will let you automatically limit comments according to the site's controls, but a Tumblr or Wordpress blog may be better for sharing your work with others outside of our community.<br><br>If you provide a name for your blog, it will be used either way. <tbody id="extras" style="display: none;"> <tr><th>Big avatar:<td><input type="checkbox" name="big_avatar" value="1" [if(getv("big-avatar") == 1) {checked}] id="big_avatar"><label for="big_avatar">Enable user page decorations (blurred watermarks) for big (500x500) avatars.</label> </tbody> <tr><th><td> <span class="buttonbox"><input type="submit" value="Submit"></span> <span onclick="document.getElementById('extras').style.display='';" style="cursor: pointer">More</span> </td></tr> </table> </form> [end mode edit] [begin mode submit] [ putv("twitter", $_params.twitter); putv("brief", $_params.brief); putv("bio", $_params.bio); putv("blog_title", $_params.blog_title); putv("blog_url", $_params.blog_url); putv("blog_rss", $_params.blog_rss); putv("big-avatar", $_params.big_avatar); ge = get_extended(_author); putva("email", $_params.email, ge); set_extended(_author, ge); $_subtitle = substr($_params.subtitle, 0, 30); putv("avpath", ""); keep_date(); refresh_to({./?[_bestlink]}, 1); msg_start()] It's done! <a href="/?[_bestlink]">Go look</a>. [msg_end()] [end mode submit] [begin mode picture] <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="ufile"> <input type="hidden" name="id" value="[$_id]"> <input type="hidden" name="mode" value="picture_submit"> <input type="submit" value="Upload" name="button"> </form> <p>Requirements:</p> <ul> <li>JPEG or PNG only. <li>Files that are not 500x500 will be cropped and scaled to fit. <li>Don't upload anything over a megabyte. </ul> [ $fn = {/avatars/[_author].jpg}; $fullfn = {[$_globals.VROOT][$fn]}; if(file_exists($fullfn)) {<p><a href="/?id=[_id]&mode=picture_delete">Click here to delete your avatar</a>.</p>}; ] [end mode picture] [begin mode picture_delete] [ $fn = {/avatars/[_author].jpg}; $fullfn = {[$_globals.VROOT][$fn]}; if(can_edit()) {[ if(file_exists($fullfn & "_blurred.jpg")) rm($fullfn & "_blurred.jpg"); if(file_exists($fullfn)) {[ if(rm($fullfn)) {[ putv("avpath", "")] Deleted! <a href="/?id=[_id]&mode=edit">Go back.</a> } else { Error! Check the notices below and contact an administrator. <a href="/?id=[_id]&mode=edit">Go back.</a> }; ]} else { Already gone! <a href="/?id=[_id]&mode=edit">Go back.</a> } ]} else { Not yours! <a href="/?id=[_id]&mode=edit">Go back.</a> } ] [end mode picture_delete] [begin mode picture_submit] [ $fn = {/avatars/[_author].jpg}; $fullfn = {[$_globals.VROOT][$fn]}; if(file_exists($fullfn)) rm($fullfn); if(file_exists($fullfn & "_blurred.jpg")) rm($fullfn & "_blurred.jpg"); $na = file_upload("ufile", $fn, 1048576); $fn = slice($na, 2, 1); if($fn != "null") { [file_crop($fn, 500, 500); mv($fn, $fullfn); file_blur($fullfn, $fullfn & "_blurred.jpg", 10); putv("avpath", ""); keep_date(); ] Done. Upload successful! [refresh_to({./?id=[$_id]&mode=edit}, 2)] <script type="javascript"><!-- document.location = "./?id=[$_id]&mode=edit"; --></script> } else { File upload failed. Tried copying to "[$fullfn]" from "[$fn]". Why is anyone's guess. Maybe the file was really, really big? Contact <a href="mailto:[$_globals.ADMIN_EMAIL]">an administrator</a> if you want it fixed. }; ] [end mode picture_submit] [begin mode external] [suppress_template(); page("short", $_id);] [end mode external] [begin mode add_news] [ $p = new_page({Untitled Entry}, $_id); set_template($p, title2id("News Post")); set_permissions($p, "cadrec--r-c-dr-c--r-"); page("edit", $p); ] [end mode add_news] [begin mode blog_title][if(getv("blog_title") != "") getv("blog_title") else $_title;][end mode blog_title] [begin mode blog] [if(getv("blog_url") == "") { [ override_title(getv("blog_title"), $_owner.name & "'s blog"); override_parent({/?[_bestlink]}, $_title); $pagesize = 10; $q = query("news", $pagesize, "id DESC, title", "parent", $_id, "template", title2id("News Post")); query_view("abbr", $q, list("no_icon")); $qc = query_count($q); if($qc > $pagesize) {<center>[ $np = next_page($q); $pp = previous_page($q); if($pp) {<br><br><a href="[$pp]">Previous</a> }; if($np) { <a href="[$np]">Next</a><br>}; page_list($q); ]</center>}; if(_viewer.id == _author) {<center><br> [untitled = search("link", "parent", _id, "title", "Untitled Entry"); if(untitled != "") {<i>Please give <b>[untitled]</b> a real title before creating a new blog post.</i>} else {<a href="/?id=[$_id]&mode=add_news">Create blog post</a>} ] </center>}; ] } else { [suppress_title()] Transferring you to <a href="[getv("blog_url")]">[getv("blog_title")]</a>... [refresh_to(getv("blog_url"), 1)] }] [end mode blog] [begin mode short] [msg_start({max-height: 500px; overflow: hidden; position: relative}); $avpath = getv("avpath"); if(getv("big-avatar") == 1) if(substr($avpath, 0, 1) == "/") {<div class="profile_short_bg psbg_[_id]" style="[if(getu("dark-theme") == 1) {opacity: 0.2} else {opacity: 0.2}]"><img style="visibility: hidden; width: 100%;" src="[$avpath]_blurred.jpg"> </div><style type="text/css"> .mbox_parent { [ if(getu("dark-theme") == 1) { background: rgba(56, 56, 56, 0.7); } else { background: rgba(255, 255, 255, 0.7); } ] } .psbg_[_id] { background-size: 100%; background-repeat: repeat-x, no-repeat; background-position: bottom left, 0 0; background-size: 64px 256px, cover; [ if(getu("dark-theme") == 1) { background-image: url('/theme/dark-grad.png'), url('[$avpath]_blurred.jpg'); } else { background-image: url('/theme/light-grad.png'), url('[$avpath]_blurred.jpg'); } ] } </style>}; {<div style="z-index: 1; position: relative">}; ] <a href="/?[_bestlink]"><img src="[$avpath]" style="max-width: 150px; margin-right: 10px; float: left;"> <span style="font-size: 150%; font-family: 'Segoe UI', Verdana, sans-serif; font-weight: lighter;">[$_title]</span>[if($_subtitle != ""){<br>}] <span style="font-size: 110%; font-family: 'Segoe UI', Verdana, sans-serif; font-weight: lighter;">[info_display($_subtitle)]</span></a><br> [_emoticons(_wiki_format(getv("brief")), _author)] [if(getv("twitter") != "") { <a target="_blank" href="https://twitter.com/#!/[getv("twitter")]"><i style="opacity: 0.6">view [getv("twitter")] on twitter...</i></a> };] </div> [msg_end()] [end mode short] [begin mode icon][ $avpath = getv("avpath"); ] <a href="/?[_bestlink]"><img src="/pictures/thumb.star?src=[urlencode($avpath)]&w=64&h=64&f=png" height="64px" title="[$_owner.name]" style="vertical-align: middle; border-radius: 5px;"></a> [end mode icon] [begin mode small_icon][ $avpath = getv("avpath"); ] <a href="/?[_bestlink]"><img src="/pictures/thumb.star?src=[urlencode($avpath)]&w=32&h=32&f=png" height="32px" title="[$_owner.name]" style="vertical-align: middle; border-radius: 5px; margin: 3px;"></a> [end mode small_icon] [begin mode recent_icon][if(getva("hide-online", get_extended(_author)) != 1) if(date_diff(get_date(_id), now()) < 300) {[ $avpath = getv("avpath"); ] <a href="/?[_bestlink]"><img src="/pictures/thumb.star?src=[urlencode($avpath)]&w=32&h=32&f=png" height="32px" title="[$_owner.name] ([soft_age(_date)] ago)" style="vertical-align: middle; border-radius: 5px; margin: 3px;"></a> }][end mode recent_icon] [begin mode today_icon][if(getva("hide-online", get_extended(_author)) != 1) if(date_diff(get_date(_id), now()) < 86400) if((date_diff(get_date(_id), now()) >= 300) || (getu("hide-5m"))) {[ $avpath = getv("avpath"); ] <a href="/?[_bestlink]"><img src="/pictures/thumb.star?src=[urlencode($avpath)]&w=32&h=32&f=png" height="32px" title="[$_owner.name] ([soft_age(_date)] ago)" style="vertical-align: middle; border-radius: 5px; margin: 3px;"></a> }][end mode today_icon] [begin mode recent_abbr][if(getva("hide-online", get_extended(_author)) != 1) if(date_diff(get_date(_id), now()) < 300) {[ $avpath = getv("avpath"); ]<a style="display: inline-block; margin: 2px; vertical-align: top; font-size: 80%;" href="/?[_bestlink]"><img src="/pictures/thumb.star?src=[urlencode($avpath)]&w=32&h=32&f=png" height="32px" style="border-radius: 2px;" title="[$_owner.name]"></a>}][end mode recent_abbr] [begin mode recent_link][if(getva("hide-online", get_extended(_author)) != 1) if(date_diff(get_date(_id), now()) < 300) {[ $avpath = getv("avpath"); ] <span class="hoverimg"><a new href="/?[_bestlink]">[$_owner.name]<img src="/pictures/thumb.star?src=[urlencode($avpath)]&w=32&h=32&f=png" height="32px"></a> </span>}][end mode recent_link] [begin mode link][ $avpath = getv("avpath"); ]<span class="hoverimg"><a new href="/?[_bestlink]">[$_owner.name]<img src="/pictures/thumb.star?src=[urlencode($avpath)]&w=32&h=32&f=png" height="32px"></a></span>[end mode link] [begin mode abbr][ $avpath = getv("avpath"); ] <a style="display: inline-block; margin: 2px;" href="/?[_bestlink]"><img src="/pictures/thumb.star?src=[urlencode($avpath)]&w=32&h=32&f=png" height="32px" style="vertical-align: middle; border-radius: 2px; margin-right: 4px">[$_owner.name]</a> [end mode abbr] [begin mode view]<div style="position: relative;"><style type="text/css"> .sidetitle { margin-top: 40px; margin-bottom: 0px; padding-bottom: 0px; } </style>[ $avpath = getv("avpath"); if(getv("big-avatar") == 1) if(substr($avpath, 0, 1) == "/") {<div class="profile_full_bg" style="[if(getu("dark-theme") == 1) {opacity: 0.2} else {opacity: 0.2}]"><img style="visibility: hidden; width: 100%;" src="[$avpath]_blurred.jpg"> </div><style type="text/css"> .mbox_parent { [ if(getu("dark-theme") == 1) { background: rgba(56, 56, 56, 0.7); } else { background: rgba(255, 255, 255, 0.7); } ] } #footer { [ if(getu("dark-theme") == 1) { color: rgba(255, 255, 255, 0.18); } else { color: rgba(0, 0, 0, 0.19); } ] } .profile_full_bg { background-size: 100%; background-repeat: repeat-x, no-repeat; background-position: bottom left, 0 0; background-size: 64px 256px, cover; background-image: url('/theme/[iif(getu("dark-theme"), {dark}, {light})]-grad.png'), url('[$avpath]_blurred.jpg'); } .post_bg_[_id] { background-image: none !important; } h1 { [ if(getu("dark-theme") != 1) { text-shadow: 0px 0px 25px rgba(235, 235, 235, 1.0); } ] } </style>}]<div style="position: relative; z-index: 1;"> <table style="width: 100%; table-layout: fixed"><tr><td class="mobile_block" valign="top" style="padding-right: 10px; overflow: auto"> <style type="text/css"> #works th { text-align: right; padding-right: 10px; } </style> [ projects = search("table", "template", title2id("Universe"), "author", _author); languages = search("table", "template", title2id("Language"), "author", _author); if((projects != "") || (languages != "")) {[msg_start({margin-top: 0px;})] <table id="works"> [ if(projects != "") {<tr><th colspan="2" style="text-align: left">universes [projects]}; if(languages != "") {<tr><th colspan="2" style="text-align: left">languages [languages]}; ] </table> [msg_end()]}; ] [if(getv("blog_rss") == "") { [ $q = query("blog", 3, "id desc, title", "parent", $_id, "template", title2id("News Post")); if(query_count($q) > 0) { <h1 class="sidetitle"><a href="/?id=[$_id]&mode=blog">[iif(getv("blog_title"), getv("blog_title"), [$_title] & "'s Blog")]</a></h1> }; query_view("abbr", $q, list("no_icon")); if(_viewer.id == _author) {<center> [untitled = search("link", "parent", _id, "title", "Untitled Entry"); if(untitled != "") {<i>Please give <b>[untitled]</b> a real title before creating a new blog post.</i>} else {<a href="/?id=[$_id]&mode=add_news">Create blog post</a>} ] </center>}; if(query_count($q) > 0) {<center> <a href="/?id=[$_id]&mode=blog">More...</a> </center>}; ] } else { <h1 class="sidetitle"><a href="[getv("blog_url")]">[iif(getv("blog_title"), getv("blog_title"), [$_title] & "'s Blog")]</a></h1> [ show("view", slice(get_rss(title2id("Tumblr Entry"), getv("blog_rss") ), 0, 3)) ] <center> <a href="[getv("blog_url")]">More...</a> </center> }] [ q = query("forum_posts", 3, "id desc, title", "template", title2id("Linear Post"), "author", _author); if(query_count(q) > 0) {<h1 class="sidetitle"><a href="/?id=[title2id("Search")]&q=&go=Search&author_restrict=1&author=[_author]&type_restrict=1&template=[title2id("Linear Post")]"><i>Ex foris</i></a></h1>}; query_run("abbr", q); ] </div> <td class="mobile_block" valign="top" style="width: 250px; font-size: 80%"> <div class="mbox_parent" style="margin: 0px;"> <center><img src="[$avpath]" style="max-width: 200px;"><br> <span style="font-size: 180%">[_title]</span><br> [if(_subtitle != "") {<span style="font-size: 140%">[info_display(_subtitle)]</span><br>}] <span style="font-size: 90%">last seen: [soft_age(_date)] ago</span><br> <span style="font-size: 90%">posts: [int(getva("posts", get_extended(_author)))]</span><br> <span style="font-size: 90%" title="next rank: [ score = getva("posts", get_extended(_author)); if(score > 0) {[ a = (2 ^ int(1 + log2(score))); if(a < 32) a = 32; if(a > 8192) {max level} else a; ]} else 32; ]">[_postrank(getva("posts", get_extended(_author)), _owner)]</span><br> <span style="font-size: 90%; display: block"><br><a href="/?id=[_id]&mode=message">send message</a><br> <a href="/?id=[title2id("Search")]&q=&go=Search&author_restrict=1&author=[_author]&type_restrict=1&template=[title2id("Linear Post")]">find forum posts</a><br><br></span> </center> [_emoticons(_wiki_format(getv("bio")), _author)] </div> [if(can_edit()) {<center><a href="/?id=[_id]&mode=edit">edit profile</a></center>}] </table> </div> </div>[end mode view]