pretty much today's bread

This commit is contained in:
flash 2015-08-28 22:32:31 +02:00
parent 15ec4b04c7
commit df0a14de27
20 changed files with 214 additions and 136 deletions

View file

@ -48,7 +48,10 @@
"20150820", "20150820",
"20150821", "20150821",
"20150822", "20150822",
"20150823" "20150823",
"20150825",
"20150826",
"20150828"
] ]
@ -2252,6 +2255,41 @@
"user": "Flashwave" "user": "Flashwave"
} }
],
"20150825": [
{
"type": "UPD",
"change": "Moved profile templates to own folder.",
"user": "Flashwave"
}
],
"20150826": [
{
"type": "ADD",
"change": "Added profile entry for birthday.",
"user": "Flashwave"
}
],
"20150828": [
{
"type": "UPD",
"change": "Did a plethora of changes to Misaki.",
"user": "Flashwave"
},
{
"type": "UPD",
"change": "Cleaned up the code for the front page stats.",
"user": "Flashwave"
}
] ]
} }

View file

@ -1428,4 +1428,11 @@ class Users {
} }
// Get the ID of the newest user
public static function getNewestUserId() {
return Database::fetch('users', false, ['password_algo' => ['nologin', '!=']], ['id', true], ['1'])['id'];
}
} }

View file

@ -8,7 +8,7 @@
namespace Sakura; namespace Sakura;
// Define Sakura version // Define Sakura version
define('SAKURA_VERSION', '20150823'); define('SAKURA_VERSION', '20150828');
define('SAKURA_VLABEL', 'Eminence'); define('SAKURA_VLABEL', 'Eminence');
define('SAKURA_COLOUR', '#6C3082'); define('SAKURA_COLOUR', '#6C3082');
define('SAKURA_STABLE', false); define('SAKURA_STABLE', false);

View file

@ -1,4 +0,0 @@
<div class="stats">
<h1 class="sectionHead">stats</h1>
<div class="content">We have <b>{{ stats.userCount }}</b>, <b><a href="//{{ sakura.urls.main }}/u/{{ stats.newestUser.id }}" class="default">{{ stats.newestUser.username }}</a></b> is the newest user, it has been <b>{{ stats.lastRegDate }}</b> since the last user registered, there's <b>{{ stats.chatOnline }}</b> in chat right now and the forum has <b>{{ stats.topicCount }}</b> and <b>{{ stats.postCount }}</b>.</div>
</div>

View file

@ -1,7 +1,6 @@
{% include 'global/header.tpl' %} {% include 'global/header.tpl' %}
<div class="content standalone"> <div class="content standalone">
<h1 class="sectionHeader">Information</h1> <h1 class="sectionHead">Information</h1>
<hr class="default" />
{{ page.message }} {{ page.message }}
{% if page.redirect %}<br /><a href="{{ page.redirect }}" class="default">Click here if you aren't being redirected.</a>{% endif %} {% if page.redirect %}<br /><a href="{{ page.redirect }}" class="default">Click here if you aren't being redirected.</a>{% endif %}
</div> </div>

View file

@ -5,9 +5,8 @@
<div class="ft-logo"></div> <div class="ft-logo"></div>
<div class="ft-text"> <div class="ft-text">
<div>Copyright &copy; 2013-2015 <a href="http://flash.moe/" target="_blank">Flashwave</a> &amp; <a href="http://circlestorm.net/" target="_blank">Circlestorm</a>, <a href="/credits">et al</a>.</div> <div>Copyright &copy; 2013-2015 <a href="http://flash.moe/" target="_blank">Flashwave</a> &amp; <a href="http://circlestorm.net/" target="_blank">Circlestorm</a>, <a href="/credits">et al</a>.</div>
<div><a href="/r/terms">Terms of Service</a> | <a href="/contact">Contact</a> | <a href="/faq">FAQ</a> | <a href="/feedback">Feedback</a> | <a href="/p/rules">Rules</a> | <a href="/changelog">Changelog</a> | <a href="http://status.flashii.net/">Status</a></div> <div><a href="/p/terms">Terms of Service</a> | <a href="/contact">Contact</a> | <a href="/faq">FAQ</a> | <a href="/feedback">Feedback</a> | <a href="/p/rules">Rules</a> | <a href="/changelog">Changelog</a> | <a href="http://status.flashii.net/">Status</a></div>
</div> </div>
<div class="clear"></div>
</div> </div>
</div> </div>
</body> </body>

View file

@ -84,20 +84,20 @@
<div class="header-fade"></div> <div class="header-fade"></div>
<div id="notifications"></div> <div id="notifications"></div>
<div id="header"> <div id="header">
<a href="/">
<div class="logo"></div> <div class="logo"></div>
<div class="text"></div> </a>
<div class="floatRight">
<div class="social"> <div class="social">
<ul> <ul>
<li><a target="_blank" title="Flashii on Twitter" class="fa fa-twitter" href="https://twitter.com/_flashii"></a></li> <li><a target="_blank" title="Flashii on Twitter" class="fa fa-twitter" href="https://twitter.com/_flashii"></a></li>
<li><a target="_blank" title="Flashii on YouTube" class="fa fa-youtube-play" href="https://youtube.com/user/flashiinet"></a></li> <li><a target="_blank" title="Flashii on YouTube" class="fa fa-youtube-play" href="https://youtube.com/user/flashiinet"></a></li>
<li><a target="_blank" title="Flashii on Steam" class="fa fa-steam" href="https://steamcommunity.com/groups/flashiinet"></a></li> <li><a target="_blank" title="Flashii on Steam" class="fa fa-steam" href="https://steamcommunity.com/groups/flashiinet"></a></li>
<li><a target="_blank" title="Circlestorm on BitBucket" class="fa fa-bitbucket" href="https://bitbucket.org/circlestorm"></a></li>
<li><a target="_blank" title="Flashii on osu!" class="fa fa-dot-circle-o" href="https://osu.ppy.sh/#"></a></li>
<li><a title="Subscribe to the news page feed" class="fa fa-rss" href="/news.xml"></a></li> <li><a title="Subscribe to the news page feed" class="fa fa-rss" href="/news.xml"></a></li>
</ul> </ul>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div class="image"></div>
</div>
</div> </div>
<div id="wrapper"> <div id="wrapper">
{% if php.self == '/profile.php' ? profile.data.userData.profileBackground : (user.checkPermission('SITE', 'CREATE_BACKGROUND') and user.data.userData.userOptions.profileBackgroundSiteWide and user.data.userData.profileBackground) %} {% if php.self == '/profile.php' ? profile.data.userData.profileBackground : (user.checkPermission('SITE', 'CREATE_BACKGROUND') and user.data.userData.userOptions.profileBackgroundSiteWide and user.data.userData.profileBackground) %}
@ -112,7 +112,7 @@
<li><a href="/forum">Forum</a></li> <li><a href="/forum">Forum</a></li>
<li><a href="/members">Members</a></li> <li><a href="/members">Members</a></li>
<li><a href="/search">Search</a></li> <li><a href="/search">Search</a></li>
<li><a href="/donate">Donate</a></li> <li><a href="/support">Support us</a></li>
</ul> </ul>
<ul class="nav-right floatRight"> <ul class="nav-right floatRight">
<li class="nav-usermenu"> <li class="nav-usermenu">
@ -132,5 +132,4 @@
</li> </li>
<li><a href="/u/{{ user.data.id }}" class="ignore"><img src="{{ sakura.contentPath }}/pixel.png" alt="{{ user.data.username }}" style="background-image: url('/a/{{ user.data.id }}');" class="nav-avatar" /></a></li> <li><a href="/u/{{ user.data.id }}" class="ignore"><img src="{{ sakura.contentPath }}/pixel.png" alt="{{ user.data.username }}" style="background-image: url('/a/{{ user.data.id }}');" class="nav-avatar" /></a></li>
</ul> </ul>
<div class="clear"></div>
</div> </div>

View file

@ -1,10 +1,21 @@
{% include 'global/header.tpl' %} {% include 'global/header.tpl' %}
<div class="homepage"> <div class="homepage">
<div class="frontHead">
<h1 class="sectionHead">a</h1>
</div>
<div class="frontStats"> <div class="frontStats">
{# include 'elements/indexRight.tpl' #} <div title="We have {{ stats.userCount }} user{% if stats.userCount != 1 %}s{% endif %}">
<div><span class="fa fa-line-chart"></span> <span>{{ stats.userCount }}</span></div>
</div>
<div title="Active in the last 5 minutes: {% for amount,onlineUser in stats.onlineUsers %}{{ onlineUser.username }}{% if amount != (stats.onlineUsers|length - 1) %}, {% endif %}{% endfor %}">
<div><span class="fa fa-users"></span> <span>{{ stats.onlineUsers|length }}</span></div>
</div>
<div title="Our newest user is {{ stats.newestUser.data.username }}">
<div><span class="fa fa-user-plus"></span> <a href="/u/{{ stats.newestUser.data.id }}" style="color: {{ stats.newestUser.colour }}">{{ stats.newestUser.data.username }}</a></div>
</div>
<div title="It has been {{ stats.lastRegDate }} since the last user registered">
<div><span class="fa fa-clock-o"></span> <span>{{ stats.lastRegDate }}</span></div>
</div>
<div title="The forum has {{ stats.topicCount }} thread{% if stats.topicCount != 1 %}s{% endif %} consisting out of {{ stats.postCount }} post{% if stats.postCount != 1 %}s{% endif %}">
<div><span class="fa fa-list"></span> <span>{{ stats.topicCount }}</span><span style="font-size: .5em; line-height: 1em">/ {{ stats.postCount }}</span></div>
</div>
</div> </div>
<div class="frontNews"> <div class="frontNews">
{% for newsPost in newsPosts %} {% for newsPost in newsPosts %}
@ -13,18 +24,5 @@
</div> </div>
<div class="clear"></div> <div class="clear"></div>
<!--<script type="text/javascript" src="{{ sakura.resources }}/js/ybabstat.js"></script>--> <!--<script type="text/javascript" src="{{ sakura.resources }}/js/ybabstat.js"></script>-->
<script type="text/javascript">
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'flashii';
/* * * DO NOT EDIT BELOW THIS LINE * * */
(function () {
var s = document.createElement('script');
s.async = true;
s.type = 'text/javascript';
s.src = '//' + disqus_shortname + '.disqus.com/count.js';
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
}());
</script>
</div> </div>
{% include 'global/footer.tpl' %} {% include 'global/footer.tpl' %}

View file

@ -23,9 +23,9 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
<div class="head">Stats</div> <div class="head">Stats</div>
We have <b>{{ stats.userCount }}</b>, We have <b>{{ stats.userCount }} user{% if stats.userCount != 1 %}s{% endif %}</b>,
<b><a href="/u/{{ stats.newestUser.id }}" class="default">{{ stats.newestUser.username }}</a></b> is the newest user, <b><a href="/u/{{ stats.newestUser.data.id }}" class="default">{{ stats.newestUser.data.username }}</a></b> is the newest user,
it has been <b>{{ stats.lastRegDate }}</b> since the last user registered and the forum has <b>{{ stats.topicCount }}</b> and <b>{{ stats.postCount }}</b>. it has been <b>{{ stats.lastRegDate }}</b> since the last user registered and the forum has <b>{{ stats.topicCount }} thread{% if stats.topicCount != 1 %}s{% endif %}</b> and <b>{{ stats.postCount }} post{% if stats.postCount != 1 %}s{% endif %}</b>.
<div class="head">Online Users</div> <div class="head">Online Users</div>
{% if stats.onlineUsers %} {% if stats.onlineUsers %}
All active users in the past 5 minutes:<br /> All active users in the past 5 minutes:<br />

View file

@ -85,7 +85,7 @@
<h2 style="color: #A00; text-shadow: 0 0 7px #A00; margin-top: 0;">Bad</h2> <h2 style="color: #A00; text-shadow: 0 0 7px #A00; margin-top: 0;">Bad</h2>
<span style="font-size: 10px; line-height: 10px;">This user has <b>{{ profile.getWarnings|length }} warning{% if profile.getWarnings|length != 1 %}s{% endif %}</b>.<br />After 5 to 10 warnings (depending on what they are for) this user may be permanently banned.</span> <span style="font-size: 10px; line-height: 10px;">This user has <b>{{ profile.getWarnings|length }} warning{% if profile.getWarnings|length != 1 %}s{% endif %}</b>.<br />After 5 to 10 warnings (depending on what they are for) this user may be permanently banned.</span>
{% else %} {% else %}
<h2 style="color: #0A0; text-shadow: 0 0 7px #0A0; margin-top: 0;">Good</h2> <h2 style="color: #080; text-shadow: 0 0 7px #080; margin-top: 0;">Good</h2>
{% endif %} {% endif %}
{% endif %} {% endif %}
</div> </div>

View file

@ -1,4 +1,3 @@
{% if profile.fields %}
<form enctype="multipart/form-data" method="post" action="{{ sakura.currentPage }}" id="editProfileForm"> <form enctype="multipart/form-data" method="post" action="{{ sakura.currentPage }}" id="editProfileForm">
<input type="hidden" name="sessid" value="{{ php.sessionid }}" /> <input type="hidden" name="sessid" value="{{ php.sessionid }}" />
<input type="hidden" name="timestamp" value="{{ php.time }}" /> <input type="hidden" name="timestamp" value="{{ php.time }}" />
@ -21,6 +20,28 @@
{% endif %} {% endif %}
</div> </div>
{% endfor %} {% endfor %}
<div class="profile-field birthday">
<div>
<h2>Birthday</h2>
</div>
<div style="text-align: center;">
Day: <select name="birthday_day">
{% for i in 1..31 %}
<option value="{{ i }}">{{ i }}</option>
{% endfor %}
</select>
Month: <select name="birthday_month">
{% for i in 1..12 %}
<option value="{{ i }}">{{ i }}</option>
{% endfor %}
</select>
Year: <select name="birthday_year">
{% for i in "now"|date('Y')..("now"|date('Y') - 100) %}
<option value="{{ i }}">{{ i }}</option>
{% endfor %}
</select>
</div>
</div>
<div class="profile-save"> <div class="profile-save">
<input type="submit" value="Save" name="submit" class="inputStyling" /> <input type="submit" value="Save" name="submit" class="inputStyling" />
<input type="reset" value="Reset" name="reset" class="inputStyling" /> <input type="reset" value="Reset" name="reset" class="inputStyling" />
@ -41,6 +62,3 @@
submit.setAttribute('onclick', 'submitPost(\''+ editProfileForm.action +'\', formToObject(\'editProfileForm\'), true, \'Updating Profile...\');'); submit.setAttribute('onclick', 'submitPost(\''+ editProfileForm.action +'\', formToObject(\'editProfileForm\'), true, \'Updating Profile...\');');
}); });
</script> </script>
{% else %}
<h1 class="stylised" style="margin: 2em auto; text-align: center;">There are no changeable profile fields.</h1>
{% endif %}

View file

@ -60,11 +60,11 @@ h6 {
h1.sectionHead { h1.sectionHead {
font-style: italic; font-style: italic;
font-size: 72px; font-size: 5em;
color: rgb(148, 117, 178); color: rgb(148, 117, 178);
opacity: 0.5; opacity: 0.5;
font-weight: 100; font-weight: 100;
line-height: 90px; line-height: 1.2em;
margin: 10px 20px; margin: 10px 20px;
} }
@ -140,9 +140,10 @@ a:active {
* Site footer * Site footer
*/ */
#footer { #footer {
height: 100px; height: 70px;
width: 100%; width: 100%;
background: linear-gradient(0deg, rgba(0, 0, 0, .4), rgba(0, 0, 0, 0)) transparent; background: linear-gradient(0deg, rgba(0, 0, 0, .6) 70%, rgba(0, 0, 0, .7) 80%, rgba(0, 0, 0, .4) 80%, rgba(0, 0, 0, 0) 90%) transparent;
padding-top: 20px;
position: absolute; position: absolute;
bottom: 0; bottom: 0;
font-family: "Exo2-0-LightItalic", sans-serif; font-family: "Exo2-0-LightItalic", sans-serif;
@ -151,29 +152,32 @@ a:active {
#footer > .inner { #footer > .inner {
max-width: 1024px; max-width: 1024px;
margin: 0 auto; margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
} }
#footer > .inner > .ft-logo { #footer > .inner > .ft-logo {
background: url('../images/image-logo.svg') no-repeat scroll center center / cover; background: url('../images/image-logo-white.svg') no-repeat scroll center center / cover;
height: 100px; height: 66px;
width: 100px; width: 66px;
float: left;
opacity: .5; opacity: .5;
} }
#footer > .inner > .ft-text { #footer > .inner > .ft-text {
margin-left: 10px; margin-left: 10px;
margin-top: 2.6em; text-align: right;
float: left;
} }
/* /*
* Site header * Site header
*/ */
#header { #header {
height: 164px; height: 120px;
max-width: 1024px; max-width: 1024px;
margin: 0 auto; margin: 0 auto;
display: flex;
justify-content: space-between;
} }
#header > * { #header > * {
@ -182,39 +186,23 @@ a:active {
#header .logo { #header .logo {
background: url('../images/image-logo.svg') no-repeat scroll center center / cover; background: url('../images/image-logo.svg') no-repeat scroll center center / cover;
height: 200px; height: 120px;
width: 200px; width: 120px;
position: relative; flex-grow: 1;
bottom: -49px; margin: auto;
left: -18px;
z-index: 1;
}
#header .text {
background: url('../images/text-logo.svg') no-repeat scroll center center / cover;
height: 100px;
width: 460px;
position: relative;
left: -158px;
top: -69px;
}
#header .image {
background: url('../images/right-header.png') no-repeat scroll center center / cover;
height: 164px;
width: 200px;
position: relative;
} }
#header .social { #header .social {
position: relative;
left: -200px;
z-index: 1; z-index: 1;
font-size: 2em; font-size: 2.5em;
background: rgba(0, 0, 0, .4); background: rgba(0, 0, 0, .4);
float: right; padding: 6px;
padding: 3px; margin: 1em .5em;
border-radius: 0 0 5px 5px; position: relative;
bottom: -4px;
height: 40px;
border-radius: 5px;
text-align: center;
} }
#header .social > ul { #header .social > ul {
@ -224,6 +212,7 @@ a:active {
#header .social > ul > li { #header .social > ul > li {
float: left; float: left;
margin: 5px; margin: 5px;
width: 30px;
} }
#header .social > ul > li > a { #header .social > ul > li > a {
@ -247,7 +236,7 @@ a:active {
* Wrapper * Wrapper
*/ */
#wrapper { #wrapper {
padding-bottom: 130px; padding-bottom: 100px;
} }
#wrapper > #content { #wrapper > #content {
@ -406,7 +395,6 @@ a:active {
.profile > .profileHeader { .profile > .profileHeader {
height: 250px; height: 250px;
color: #8364a1;
float: left; float: left;
width: 100%; width: 100%;
} }
@ -606,6 +594,27 @@ a:active {
/* /*
* Homepage * Homepage
*/ */
.homepage .frontStats {
margin: 1em 0;
width: 100%;
display: flex;
justify-content: space-around;
align-items: stretch;
flex-wrap: wrap;
font: 2.5em/1em "Exo2-0-LightItalic", sans-serif;
text-shadow: 1px 1px 2px rgba(0, 0, 0, .75);
}
.homepage .frontStats > div {
background: rgba(148, 117, 178, .2);
box-shadow: 0 2px 6px rgba(0, 0, 0, .75);
margin: 5px;
}
.homepage .frontStats > div > div {
padding: 10px 14px;
display: block;
}
/* /*
* News * News

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve">
<rect x="168.535" y="137.543" transform="matrix(0.9684 0.2495 -0.2495 0.9684 76.1586 -39.9684)" fill="#FFFFFF" width="54.358" height="285.682"/>
<rect x="225.326" y="276.285" transform="matrix(0.9684 0.2495 -0.2495 0.9684 112.5768 -49.7509)" fill="#FFFFFF" width="54.358" height="285.682"/>
<rect x="300.387" y="348.858" transform="matrix(0.9684 0.2495 -0.2495 0.9684 133.0613 -66.1858)" fill="#FFFFFF" width="54.358" height="285.682"/>
<rect x="384.274" y="389.694" transform="matrix(0.9684 0.2495 -0.2495 0.9684 145.9053 -85.827)" fill="#FFFFFF" width="54.358" height="285.682"/>
<rect x="479.629" y="389.694" transform="matrix(0.9684 0.2495 -0.2495 0.9684 148.9219 -109.6219)" fill="#FFFFFF" width="54.358" height="285.682"/>
<rect x="577.756" y="375.747" transform="matrix(0.9684 0.2495 -0.2495 0.9684 148.5475 -134.5507)" fill="#FFFFFF" width="54.357" height="285.683"/>
<rect x="666.446" y="398.09" transform="matrix(0.9684 0.2495 -0.2495 0.9684 156.9289 -155.9756)" fill="#FFFFFF" width="54.357" height="285.683"/>
<rect x="741.108" y="469.576" transform="matrix(0.9684 0.2495 -0.2495 0.9684 177.1295 -172.3455)" fill="#FFFFFF" width="54.357" height="285.683"/>
<rect x="803.295" y="598.097" transform="matrix(0.9684 0.2495 -0.2495 0.9684 211.1683 -183.798)" fill="#FFFFFF" width="54.357" height="285.683"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 504 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View file

@ -27,12 +27,12 @@ $renderData['board'] = [
]; ];
$renderData['stats'] = [ $renderData['stats'] = [
'userCount' => ($_INDEX_USER_COUNT = count($_INDEX_USERS = Users::getAllUsers(false))) .' user'. ($_INDEX_USER_COUNT == 1 ? '' : 's'), 'userCount' => ($_INDEX_USER_COUNT = count($_INDEX_USERS = Users::getAllUsers(false))),
'newestUser' => ($_INDEX_NEWEST_USER = empty($_INDEX_USERS) ? (new User(0))->data : max($_INDEX_USERS)), 'newestUser' => ($_INDEX_NEWEST_USER = new User(Users::getNewestUserId())),
'lastRegDate' => ($_INDEX_LAST_REGDATE = date_diff(date_create(date('Y-m-d', $_INDEX_NEWEST_USER['regdate'])), date_create(date('Y-m-d')))->format('%a')) .' day'. ($_INDEX_LAST_REGDATE == 1 ? '' : 's'), 'lastRegDate' => ($_INDEX_LAST_REGDATE = date_diff(date_create(date('Y-m-d', $_INDEX_NEWEST_USER->data['regdate'])), date_create(date('Y-m-d')))->format('%a')) .' day'. ($_INDEX_LAST_REGDATE == 1 ? '' : 's'),
'onlineUsers' => Users::checkAllOnline(), 'onlineUsers' => Users::checkAllOnline(),
'topicCount' => ($_TOPICS = count(Database::fetch('topics'))) .' topic'. ($_TOPICS != 1 ? 's' : ''), 'topicCount' => ($_TOPICS = count(Database::fetch('topics'))),
'postCount' => ($_POSTS = count(Database::fetch('posts'))) .' post'. ($_POSTS != 1 ? 's' : '') 'postCount' => ($_POSTS = count(Database::fetch('posts')))
]; ];
// Print page contents // Print page contents

View file

@ -26,4 +26,4 @@ $renderData['page']['title'] = (
); );
// Print page contents // Print page contents
print Templates::render('main/profile.tpl', $renderData); print Templates::render('profile/index.tpl', $renderData);