topic view and comments remaining

This commit is contained in:
flash 2016-11-12 02:52:51 +01:00
parent ce06bc9d68
commit 8429774256
20 changed files with 388 additions and 579 deletions

View file

@ -72,16 +72,6 @@ img {
visibility: hidden !important;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
@keyframes fadeOut {
0% {
opacity: 1;

View file

@ -55,6 +55,5 @@
&--alt {
background: #C2AEEE;
margin: 5px 10px;
}
}

View file

@ -0,0 +1,16 @@
.forum-list {
display: flex;
flex-flow: column;
&__category {
background: #C2AFFE;
font-weight: 700;
font-size: 17px;
padding: 4px;
color: inherit;
&-link {
color: inherit !important;
}
}
}

View file

@ -0,0 +1,87 @@
.forum {
display: flex;
min-height: 50px;
align-items: center;
&__icon {
text-align: center;
width: 50px;
line-height: 50px;
flex-shrink: 0;
color: #444;
text-shadow: 0 0 5px #444;
&--unread {
color: #6C5D7B;
text-shadow: 0 0 5px #9475B2;
}
}
&__info {
flex-grow: 1;
flex-shrink: 1;
}
&__name {
font-size: 1.2em;
}
&__description {
font-size: 0.8em;
line-height: 1em;
}
&__subforums {
font-style: italic;
padding-top: 5px;
}
&__subforum--unread {
font-weight: bold;
}
&__stats {
width: 70px;
text-align: center;
flex-shrink: 0;
}
&__stat {
font-size: 0.8em;
line-height: 1.2em;
color: #555;
&--big {
font-size: 1.5em;
color: #111;
}
}
&__recent {
width: 250px;
font-size: 0.9em;
line-height: 1.4em;
flex-shrink: 0;
@media (max-width: 768px) {
display: none;
}
}
&__preview {
display: flex;
align-items: center;
&-avatar {
width: 30px;
height: 30px;
flex-shrink: 0;
}
&-info {
text-align: right;
flex-grow: 1;
padding: 0 4px;
}
}
}

View file

@ -11,6 +11,20 @@
text-decoration: none !important;
transition: background .2s, box-shadow .2s;
&__container {
display: block;
text-decoration: none !important;
color: #000;
margin: 5px auto;
background-color: transparent;
border: 0;
&:active {
color: inherit;
}
}
&--active,
&:hover {
background: #C2AFFE;
box-shadow: inset 0 0 2px #9475B2;
@ -31,4 +45,49 @@
height: 150px;
display: inline-block;
}
&__actions {
display: flex;
background: linear-gradient(0deg, #9475B2, transparent) transparent;
}
&__action {
flex-grow: 1;
color: #222;
font-size: 2em;
line-height: 1em;
text-decoration: none !important;
padding: 5px 0;
background-color: transparent;
border: 0;
transition: color .2s;
&:hover {
color: #333;
}
&:active {
color: #111;
}
&--green {
&:hover {
color: #0d0;
}
&:active {
color: #0a0;
}
}
&--red {
&:hover {
color: #d00;
}
&:active {
color: #a00;
}
}
}
}

View file

@ -0,0 +1,73 @@
.topic {
display: flex;
min-height: 40px;
align-items: center;
&--highlight {
background-color: #C2AFFE;
}
&__icon {
width: 40px;
line-height: 40px;
color: #444;
text-shadow: 0 0 5px #444;
text-align: center;
flex-shrink: 0;
&--unread {
color: #6C5D7B;
text-shadow: 0 0 5px #9475B2;
}
}
&__info {
flex-grow: 1;
flex-shrink: 1;
}
&__author {
font-size: 0.8em;
line-height: 1em;
}
&__stats {
text-align: center;
}
&__stat {
font-size: 0.8em;
color: #555;
line-height: 1em;
padding: 0 10px;
&--big {
font-size: 1.3em;
color: #111;
}
}
&__recent {
display: flex;
width: 250px;
align-items: center;
&-avatar {
width: 20px;
height: 20px;
flex-shrink: 0;
}
&-info {
text-align: right;
flex-grow: 1;
padding: 0 4px;
font-size: 0.9em;
line-height: 1.4em;
}
@media (max-width: 768px) {
display: none;
}
}
}

View file

@ -1,370 +1,6 @@
/*
* Settings page styling
*/
.settings .friends-list {
text-align: center;
}
.settings .friends-list button {
background: transparent;
border: 0;
cursor: pointer;
display: block;
box-sizing: border-box;
width: 100%;
}
.settings .friends-list > div:not(:last-child),
.settings .friends-list > form {
display: inline-block;
border: 1px solid #9475B2;
text-align: center;
width: 220px;
margin: 0 2px 40px;
border-radius: 3px;
box-shadow: inset 0 0 1px #9475B2;
background: #E4CFFF;
transition: background .2s, box-shadow .2s;
}
.settings .friends-list > div:not(:last-child):hover,
.settings .friends-list > form:hover {
margin-bottom: 6px;
background: #C2AFFE;
box-shadow: inset 0 0 2px #9475B2;
}
.settings .friends-list > form:hover {
margin-bottom: 4px;
}
.settings .friends-list > .active {
background: #C2AFFE;
box-shadow: inset 0 0 2px #9475B2;
}
.settings .friends-list > div > .friends-list-data,
.settings .friends-list > form > .friends-list-data {
display: block;
}
.settings .friends-list > div > .friends-list-data > .friends-list-name,
.settings .friends-list > form > .friends-list-data > .friends-list-name {
font-size: 1.2em;
line-height: 1.5em;
padding-bottom: 4px;
}
.settings .friends-list > div > .friends-list-actions,
.settings .friends-list > form > .friends-list-actions {
display: none;
background: linear-gradient(0deg, #9475B2, transparent) transparent;
}
.settings .friends-list > div > .friends-list-actions > a,
.settings .friends-list > form > .friends-list-actions > button {
color: #222;
font-size: 2em;
line-height: 1em;
text-decoration: none;
transition: .2s;
padding: 5px 0;
float: left;
}
.settings .friends-list > div:hover > .friends-list-actions,
.settings .friends-list > form:hover > .friends-list-actions {
display: block;
}
.settings .friends-list > div > .friends-list-actions > .remove:hover,
.settings .friends-list > form > .friends-list-actions > .remove:hover {
color: #D00;
}
.settings .friends-list > div > .friends-list-actions > .remove:active,
.settings .friends-list > form > .friends-list-actions > .remove:active {
color: #A00;
}
.settings .friends-list > div > .friends-list-actions > .add:hover,
.settings .friends-list > form > .friends-list-actions > .add:hover {
color: #0D0;
}
.settings .friends-list > div > .friends-list-actions > .add:active,
.settings .friends-list > form > .friends-list-actions > .add:active {
color: #0A0;
}
.settings .friends-list > div > .friends-list-actions > a,
.settings .friends-list > form > .friends-list-actions > button {
width: 50%;
}
.settings .friends-list > div > .friends-list-actions > .fill,
.settings .friends-list > form > .friends-list-actions > .fill {
width: 100%;
}
@media (max-width: 1064px) {
.settings .friends-list > div:not(:last-child) {
margin-bottom: 6px;
}
.settings .friends-list > form {
margin-bottom: 4px;
}
.settings .friends-list .friends-list-actions {
display: block;
}
}
/*
* Support page Styling
*/
.support .sectionHeader {
margin: -1px -2px;
background: linear-gradient(270deg, rgba(148, 117, 178, .7), rgba(148, 117, 178, 0), rgba(148, 117, 178, .7)) #C2AFFE;
padding: 2px;
font-weight: 700;
font-size: 15px;
color: #306;
}
.support .featureParent {
width: 100%;
padding: 10px 0;
overflow: hidden;
text-align: center;
}
.support .featureBox {
background: linear-gradient(180deg, #C2AFFE, #B19EED) no-repeat scroll left top / cover #C2AFFE;
margin: 7px;
border-radius: 5px;
text-align: center;
box-shadow: 0 0 .5em #000;
text-shadow: 0 0 .5em #9475B2;
display: inline-block;
vertical-align: top;
transition: .2s;
width: 400px;
height: 50px;
cursor: default;
color: #503170;
}
@media (min-width: 1064px) {
.support .featureBox.final {
width: 818px;
}
.support .featureBox.final .featureBoxDesc {
font-size: 1.3em;
}
}
@media (max-width: 840px) {
.support .featureBox,
.support .featureBox.final {
width: 380px;
}
.support .featureBox.final .featureBoxDesc {
line-height: 25px;
}
.support .featureBox .right {
display: none;
}
}
.support .featureBoxIcon.right {
float: right;
}
.support .featureBox:hover {
box-shadow: 0 0 1.5em #609;
text-shadow: 0 0 .7em #9475B2;
}
.support .featureBoxIcon {
float: left;
line-height: 50px;
width: 60px;
text-align: center;
font-size: 2.8em;
}
.support .featureBoxDesc {
display: block;
line-height: 50px;
}
.support .paymentOptions {
float: right;
font-size: 2em;
margin-left: 6px;
}
.support .paymentOptions div {
float: left;
margin: 0 1px;
}
/*
* Forum Styling
*/
.forum .forumList {
display: flex;
flex-flow: column;
}
.forum .forumList .forumCategory {
background: #C2AFFE;
font-weight: 700;
font-size: 17px;
padding: 4px;
color: inherit;
text-decoration: none;
}
.forum .forumList .forumForum {
display: inline-flex;
min-height: 50px;
}
.forum .forumList .forumForum > div {
display: inline-flex;
flex-flow: column;
justify-content: center;
}
.forum .forumList .forumForum .forumIcon {
text-align: center;
width: 50px;
line-height: 50px;
flex-shrink: 0;
color: #444;
text-shadow: 0 0 5px #444;
}
.forum .forumList .forumForum .forumIcon.unread {
color: #6C5D7B;
text-shadow: 0 0 5px #9475B2;
}
.forum .forumList .forumForum .forumTitle {
flex-grow: 1;
flex-shrink: 1;
}
.forum .forumList .forumForum .forumTitle .name {
font-size: 1.2em;
line-height: 1.7em;
}
.forum .forumList .forumForum .forumTitle .desc {
font-size: .8em;
line-height: 1em;
}
.forum .forumList .forumForum .forumTitle .desc .subforums {
font-weight: bold;
padding-top: 5px;
}
.forum .forumList .forumForum .forumCount {
width: 70px;
text-align: center;
flex-shrink: 0;
}
.forum .forumList .forumForum .forumCount .topics {
font-size: 1.5em;
color: #111;
}
.forum .forumList .forumForum .forumCount .posts {
font-size: .8em;
line-height: 1.2em;
color: #555;
}
.forum .forumList .forumForum .forumLastPost {
width: 250px;
font-size: .9em;
line-height: 1.4em;
flex-shrink: 0;
}
@media (max-width: 768px) {
.forum .forumList .forumForum .forumLastPost {
display: none;
}
}
.forum .topicList {
width: 100%;
border-spacing: 0;
margin-top: 2px;
}
.forum .topicList thead,
.forum .topicList tfoot {
background: #C2AFFE;
font-weight: 700;
}
.forum .topicList tbody td {
height: 40px;
word-wrap: break-word;
}
.forum .topicList tbody .topicAnnouncement {
background: #C2AFFE;
}
.forum .topicList tbody .topicIcon {
width: 40px;
text-align: center;
color: #444;
text-shadow: 0 0 5px #444;
}
.forum .topicList tbody .topicIcon.unread {
color: #6C5D7B;
text-shadow: 0 0 5px #9475B2;
}
.forum .topicList tbody .topicAuthor {
width: 150px;
text-align: center;
}
.forum .topicList tbody .topicCounts {
text-align: center;
}
.forum .topicList tbody .topicCounts .replies {
font-size: 1.3em;
color: #111;
line-height: 1.3em;
}
.forum .topicList tbody .topicCounts .views {
font-size: .8em;
color: #555;
line-height: 1em;
}
.forum .topicList tbody .topicLast {
width: 250px;
text-align: center;
}
.forum.viewtopic .posts {
width: 100%;
border-spacing: 0;

View file

@ -17,6 +17,8 @@
@import "bem/dialogue";
@import "bem/dropdown";
@import "bem/footer";
@import "bem/forum";
@import "bem/forum-list";
@import "bem/friend-box";
@import "bem/header";
@import "bem/header-login";
@ -27,7 +29,6 @@
@import "bem/profile";
@import "bem/settings";
@import "bem/sidepanel-table";
@import "bem/topic";
@import "bem/uploader";
@import "bem/user";
@import "legacy";

View file

@ -10,10 +10,6 @@ namespace Yuuno
Sakura.Friend.Init();
Notifications.Init();
Busy.Init();
if (window.location.pathname === '/' || window.location.pathname === '/forum' || window.location.pathname === '/forum/') {
Ybabstat.Initiate();
}
}
}
}

View file

@ -1,80 +0,0 @@
namespace Yuuno
{
export class Ybabstat
{
private static Illuminati: number[] = [];
private static FreeMason: number = Date.now();
public static Initiate(): void
{
document.addEventListener('keydown', Ybabstat.HideYourMind);
}
private static TwoThousandSixteenIsTheYearWePhysicallyMergeWithCats(): void
{
var diff: number = Date.now() - Ybabstat.FreeMason,
vals: number[] = [
-7 / Math.cos((diff / 500) * (.85 * Math.PI)),
-7 * Math.tan((diff / 250) * (.85 * Math.PI))
];
document.body.style.position = 'absolute';
document.body.style.left = vals[0] + 'px';
document.body.style.top = vals[1] + 'px';
document.body.style.fontSize = vals[0] + 'px';
}
private static HideYourMind(conflictions: KeyboardEvent): void
{
var twoThousandTwelveIsTheYearWeAscendToSpaceRobots: number = conflictions.keyCode;
Ybabstat.Illuminati.push(twoThousandTwelveIsTheYearWeAscendToSpaceRobots);
if (Ybabstat.Illuminati[0] === 68 && Ybabstat.Illuminati[1] === 73 && Ybabstat.Illuminati[2] === 67 && Ybabstat.Illuminati[3] === 75 && Ybabstat.Illuminati[4] === 83) {
var dicksAreForMy: HTMLAudioElement = <HTMLAudioElement>Sakura.DOM.Create('audio'),
friendsWhenThey: HTMLSourceElement = <HTMLSourceElement>Sakura.DOM.Create('source'),
comeToMyHouse: HTMLSourceElement = <HTMLSourceElement>Sakura.DOM.Create('source');
friendsWhenThey.type = 'audio/mp3';
comeToMyHouse.type = 'audio/ogg';
friendsWhenThey.src = 'https://data.flashii.net/assets/sounds/dicks.mp3';
comeToMyHouse.src = 'https://data.flashii.net/assets/sounds/dicks.ogg';
Sakura.DOM.Append(dicksAreForMy, friendsWhenThey);
Sakura.DOM.Append(dicksAreForMy, comeToMyHouse);
dicksAreForMy.play();
Ybabstat.Illuminati = [];
}
if (Ybabstat.Illuminati[0] === 77 && Ybabstat.Illuminati[1] === 69 && Ybabstat.Illuminati[2] === 87 && Ybabstat.Illuminati[3] === 79 && Ybabstat.Illuminati[4] === 87) {
var noklz: HTMLAudioElement = <HTMLAudioElement>Sakura.DOM.Create('audio'),
von: HTMLSourceElement = <HTMLSourceElement>Sakura.DOM.Create('source'),
schnitzel: HTMLSourceElement = <HTMLSourceElement>Sakura.DOM.Create('source');
von.type = 'audio/mp3';
schnitzel.type = 'audio/ogg';
von.src = 'https://data.flashii.net/assets/sounds/mewow.mp3';
schnitzel.src = 'https://data.flashii.net/assets/sounds/mewow.ogg';
Sakura.DOM.Append(noklz, von);
Sakura.DOM.Append(noklz, schnitzel);
noklz.play();
document.body.style.animation = 'spin 5s infinite linear';
Ybabstat.Illuminati = [];
}
if (Ybabstat.Illuminati[0] == 83 && Ybabstat.Illuminati[1] == 79 && Ybabstat.Illuminati[2] == 67 && Ybabstat.Illuminati[3] == 75 && Ybabstat.Illuminati[4] == 67 && Ybabstat.Illuminati[5] == 72 && Ybabstat.Illuminati[6] == 65 && Ybabstat.Illuminati[7] == 84) {
setInterval(Ybabstat.TwoThousandSixteenIsTheYearWePhysicallyMergeWithCats, 20);
Ybabstat.Illuminati = [];
}
}
}
}

View file

@ -1,10 +1,16 @@
<div class="content__header">{{ title }}</div>
<div class="forumList">
<div class="forum-list">
{% for forum in forum.forums %}
{% if forum.type == 1 %}
{% if forum.forums|length and forum.perms.view %}
<div class="forumCategory">
{% if forum.type != 1 %}Subforums{% else %}<a href="{{ route('forums.forum', forum.id) }}">{{ forum.name }}</a>{% endif %}
<div class="forum-list__category">
{% if forum.type != 1 %}
Subforums
{% else %}
<a class="forum-list__category-link" href="{{ route('forums.forum', forum.id) }}">
{{ forum.name }}
</a>
{% endif %}
</div>
{% for forum in forum.forums %}
{% include 'forum/elements/forumEntry.twig' %}
@ -22,34 +28,14 @@
{% set paginationUrl %}{{ route('forums.forum', forum.id) }}{% endset %}
{% include 'forum/elements/forumBtns.twig' %}
{% if forum.topics %}
<table class="topicList">
<thead>
<tr>
<th></th>
<th>Topic</th>
<th>Author</th>
<th></th>
<th>Last post</th>
</tr>
</thead>
<tfoot>
<tr>
<th></th>
<th>Topic</th>
<th>Author</th>
<th></th>
<th>Last post</th>
</tr>
</tfoot>
<tbody>
{% for topic in topics[get.page|default(1) - 1] %}
{% include 'forum/elements/topicEntry.twig' %}
{% endfor %}
</tbody>
</table>
{% for topic in topics[get.page|default(1) - 1] %}
{% include 'forum/elements/topicEntry.twig' %}
{% endfor %}
{% else %}
<h1 style="margin: 2em auto; text-align: center;">There are no posts in this forum!</h1>
{% endif %}
{% include 'forum/elements/forumBtns.twig' %}
{% endif %}

View file

@ -1,35 +1,58 @@
{% if forum.perms.view %}
<div class="forumForum">
<div class="forumIcon {% if forum.unread(user.id) %}unread {% endif %}fa fa-3x {% if forum.icon %}{{ forum.icon }}{% else %}{% if forum.type == 2 %}fa-chevron-circle-right{% elseif forum.type == 1 %}fa-folder{% else %}fa-comments{% endif %}{% endif %}"></div>
<div class="forumTitle">
<div class="name"><a href="{% if forum.type == 2 %}{{ forum.link }}{% else %}{{ route('forums.forum', forum.id) }}{% endif %}">{{ forum.name }}</a></div>
<div class="desc">
<div class="forum">
<div class="forum__icon {% if forum.unread(user.id) %}forum__icon--unread {% endif %}fa fa-3x {% if forum.icon %}{{ forum.icon }}{% else %}{% if forum.type == 2 %}fa-chevron-circle-right{% elseif forum.type == 1 %}fa-folder{% else %}fa-comments{% endif %}{% endif %}"></div>
<div class="forum__info">
<a class="forum__name" href="{% if forum.type == 2 %}{{ forum.link }}{% else %}{{ route('forums.forum', forum.id) }}{% endif %}">
{{ forum.name }}
</a>
<div class="forum__description">
{{ forum.description }}
{% if forum.forums|length %}
<div class="subforums">
<div class="forum__subforums">
Subforums:
{% for forum in forum.forums %}
{% if forum.unread(user.id) %}<span style="font-variant: small-caps; color: #6C5D7B; text-shadow: 0px 0px 5px #9475B2;">[!]</span>{% endif %} <a href="{% if forum.type == 2 %}{{ forum.link }}{% else %}{{ route('forums.forum', forum.id) }}{% endif %}">{{ forum.name }}</a>
<a class="forum__subforum{% if forum.unread(user.id) %} forum__subforum--unread{% endif %}" href="{% if forum.type == 2 %}{{ forum.link }}{% else %}{{ route('forums.forum', forum.id) }}{% endif %}">
{{ forum.name }}
</a>
{% endfor %}
</div>
{% endif %}
</div>
</div>
{% if forum.type != 2 %}
<div class="forumCount">
<div class="topics" title="Amount of topics in this forum.">{{ forum.topicCount }}</div>
<div class="posts" title="Amount of posts in this forum.">{{ forum.postCount }}</div>
</div>
<div class="forumLastPost">
<div>
<div class="forum__stats">
<div class="forum__stat--big" title="Topics">
{{ forum.topicCount }}
</div>
<div class="forum__stat" title="Posts">
{{ forum.postCount }}
</div>
</div>
<div class="forum__recent">
{% if forum.lastPost.id %}
<a href="{{ route('forums.topic', forum.lastPost.topic) }}">{{ forum.lastPost.subject|slice(0, 30) }}{% if forum.lastPost.subject|length > 30 %}...{% endif %}</a><br>
<time class="time-ago" datetime="{{ forum.lastPost.time|date('r') }}">{{ forum.lastPost.time|date(config('general.date_format')) }}</time> by {% if forum.lastPost.poster.id %}<a href="{{ route('user.profile', forum.lastPost.poster.id) }}" style="color: {{ forum.lastPost.poster.colour }}; text-shadow: 0 0 5px {% if forum.lastPost.poster.colour != 'inherit' %}{{ forum.lastPost.poster.colour }}{% else %}#222{% endif %};">{{ forum.lastPost.poster.username }}</a>{% else %}[deleted user]{% endif %} <a href="{{ route('forums.post', forum.lastPost.id) }}" class="fa fa-tag"></a>
<div class="forum__preview">
<div class="forum__preview-avatar avatar avatar--border" style="background-image: url('{{ route('user.avatar', forum.lastPost.poster.id) }}')"></div>
<div class="forum__preview-info">
<div class="forum__preview-info-row">
<a href="forum__post-link" href="{{ route('forums.post', forum.lastPost.id) }}">
{{ forum.lastPost.subject|slice(0, 30)|trim }}{% if forum.lastPost.subject|length > 30 %}...{% endif %}
</a>
</div>
<div class="forum__preview-info-row">
<time class="time-ago" datetime="{{ forum.lastPost.time|date('r') }}">
{{ forum.lastPost.time|date(config('general.date_format')) }}
</time>
by
<a href="{{ route('user.profile', forum.lastPost.poster.id) }}" style="color: {{ forum.lastPost.poster.colour }}; text-shadow: 0 0 5px {% if forum.lastPost.poster.colour != 'inherit' %}{{ forum.lastPost.poster.colour }}{% else %}#222{% endif %}">
{{ forum.lastPost.poster.username }}
</a>
</div>
</div>
</div>
{% else %}
There are no posts in this forum.<br>&nbsp;
<i>There are no posts in this forum.</i>
{% endif %}
</div>
</div>
{% endif %}
</div>
{% endif %}

View file

@ -1,27 +1,48 @@
<tr>
<td class="topicIcon{% if topic.unread(user.id) %} unread{% endif %}{% if topic.type == 2 %} topicAnnouncement{% endif %}">
<div class="fa fa-2x fa-{% if topic.type == 1 %}thumb-tack{% elseif topic.type == 2 %}bullhorn{% elseif topic.status == 1 %}lock{% else %}navicon{% endif %}"></div>
</td>
<td class="topicTitle{% if topic.type == 2 %} topicAnnouncement{% endif %}">
<a href="{{ route('forums.topic', topic.id) }}">{{ topic.title }}</a>
</td>
<td class="topicAuthor{% if topic.type == 2 %} topicAnnouncement{% endif %}">
<div class="topic{% if topic.type == 2 %} topic--highlight{% endif %}">
<div class="
topic__icon
fa fa-2x
{% if topic.unread(user.id) %}topic__icon--unread{% endif %}
fa-{% if topic.type == 1 %}thumb-tack{% elseif topic.type == 2 %}bullhorn{% elseif topic.status == 1 %}lock{% else %}navicon{% endif %}
"></div>
<div class="topic__info">
<a class="topic__title" href="{{ route('forums.topic', topic.id) }}">
{{ topic.title }}
</a>
{% if topic.firstPost.poster.id %}
<a href="{{ route('user.profile', topic.firstPost.poster.id) }}" style="color: {{ topic.firstPost.poster.colour }}; text-shadow: 0 0 5px {% if topic.firstPost.poster.colour != 'inherit' %}{{ topic.firstPost.poster.colour }}{% else %}#222{% endif %};">{{ topic.firstPost.poster.username }}</a>
{% else %}
[deleted user]
<div class="topic__author">
by
<a class="topic__author-link" href="{{ route('user.profile', topic.firstPost.poster.id) }}" style="color: {{ topic.firstPost.poster.colour }}; text-shadow: 0 0 5px {% if topic.firstPost.poster.colour != 'inherit' %}{{ topic.firstPost.poster.colour }}{% else %}#222{% endif %}">
{{ topic.firstPost.poster.username }}
</a>
</div>
{% endif %}
</td>
<td class="topicCounts{% if topic.type == 2 %} topicAnnouncement{% endif %}">
<div class="replies" title="Amount of replies to this topic.">{{ topic.replyCount }}</div>
<div class="views" title="Amount of times this topic has been viewed.">{{ topic.views }}</div>
</td>
<td class="topicLast{% if topic.type == 2 %} topicAnnouncement{% endif %}">
{% if topic.lastPost.poster.id %}
<a href="{{ route('user.profile', topic.lastPost.poster.id) }}" style="color: {{ topic.lastPost.poster.colour }}; text-shadow: 0 0 5px {% if topic.lastPost.poster.colour != 'inherit' %}{{ topic.lastPost.poster.colour }}{% else %}#222{% endif %};">{{ topic.lastPost.poster.username }}</a>
{% else %}
[deleted user]
{% endif %} <a href="{{ route('forums.post', topic.lastPost.id) }}" class="fa fa-tag"></a><br>
<time class="time-ago" datetime="{{ topic.lastPost.time|date('r') }}">{{ topic.lastPost.time|date(config('general.date_format')) }}</time>
</td>
</tr>
</div>
<div class="topic__stats">
<div class="topic__stat--big" title="Replies">
{{ topic.replyCount }}
</div>
<div class="topic__stat" title="Views">
{{ topic.views }}
</div>
</div>
<div class="topic__recent">
<div class="topic__recent-avatar avatar avatar--border" style="background-image: url('{{ route('user.avatar', topic.lastPost.poster.id) }}')"></div>
<div class="topic__recent-info">
<div class="topic__recent-info-row">
<a href="{{ route('forums.post', topic.lastPost.id) }}">Last reply</a>
by
{% if topic.lastPost.poster.id %}
<a href="{{ route('user.profile', topic.lastPost.poster.id) }}" style="color: {{ topic.lastPost.poster.colour }}; text-shadow: 0 0 5px {% if topic.lastPost.poster.colour != 'inherit' %}{{ topic.lastPost.poster.colour }}{% else %}#222{% endif %};">{{ topic.lastPost.poster.username }}</a>
{% else %}
[deleted user]
{% endif %}
</div>
<div class="topic__recent-info-row">
<time class="time-ago" datetime="{{ topic.lastPost.time|date('r') }}">
{{ topic.lastPost.time|date(config('general.date_format')) }}
</time>
</div>
</div>
</div>
</div>

View file

@ -1,13 +1,12 @@
{% extends 'master.twig' %}
{% set title %}Forums / {{ forum.name }}{% endset %}
{% set forumBackLink %}{{ route('forums.index') }}{% endset %}
{% set forumNewLink %}{{ route('forums.new', forum.id) }}{% endset %}
{% set forumMarkRead %}{{ route('forums.mark', forum.id) }}?s={{ session_id() }}{% endset %}
{% set title = 'Forums / ' ~ forum.name %}
{% set forumBackLink = route('forums.index') %}
{% set forumNewLink = route('forums.new', forum.id) %}
{% set forumMarkRead = route('forums.mark', forum.id) ~ '?s=' ~ session_id() %}
{% block content %}
<div class="content forum">
<div class="content">
{% include 'forum/elements/forumBase.twig' %}
</div>
{% endblock %}

View file

@ -3,7 +3,7 @@
{% set title = 'Forums' %}
{% block content %}
<div class="content homepage forum">
<div class="content">
<div class="content--right">
<div id="forumIndexPopularTopics">
<div class="content__header content__header--alt">Popular topics</div>

View file

@ -1,8 +1,7 @@
{% extends 'master.twig' %}
{% set forumBackLink %}{{ route('forums.forum', forum.id) }}{% endset %}
{% set title %}{% if topic is defined %}{{ topic.title }}{% else %}Creating topic in {{ forum.name }}{% endif %}{% endset %}
{% set forumBackLink = route('forums.forum', forum.id) %}
{% set title = topic is defined ? topic.title : 'Creating topic in ' ~ forum.name %}
{% if topic is defined %}
{% if forum.perms.reply
@ -48,11 +47,11 @@
{% set posts = topic.posts|batch(10) %}
{% set paginationPages = posts %}
{% set paginationUrl %}{{ route('forums.topic', topic.id) }}{% endset %}
{% set paginationUrl = route('forums.topic', topic.id) %}
{% endif %}
{% block css %}
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.5.0/styles/default.min.css">
<link href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.5.0/styles/default.min.css" rel="stylesheet">
{% endblock %}
{% block js %}
@ -90,11 +89,18 @@
{% endblock %}
{% block content %}
<div class="content forum viewtopic">
<div class="content__header">{{ forum.name }} / <span id="topicTitle">{{ topic.title|default(null) }}</span></div>
<div class="content">
<div class="content__header">
{{ forum.name }} / <span id="topicTitle">
{{ topic.title|default(null) }}
</span>
</div>
{% include 'forum/elements/forumBtns.twig' %}
<table class="posts">
{% if topic is defined %}
{% set textCache = session.replyText['t' ~ topic.id]|default(null) %}
{% set postingAction = route('forums.topic.reply', topic.id) %}
@ -149,11 +155,15 @@
</td>
</tr>
{% endfor %}
{% else %}
{% set titleCache = session.replyText['f' ~ forum.id].title|default('') %}
{% set textCache = session.replyText['f' ~ forum.id].text|default('') %}
{% set postingAction = route('forums.new', forum.id) %}
{% endif %}
{% if forumReplyLink is defined or topic is not defined %}
<tr class="post" id="postingPreview" style="display: none;">
<td class="userpanel">
@ -181,9 +191,11 @@
</tr>
{% endif %}
</table>
{% if forumReplyLink is defined or topic is not defined %}
{% include 'forum/elements/replyForm.twig' %}
{% endif %}
{% include 'forum/elements/forumBtns.twig' %}
</div>
{% endblock %}

View file

@ -14,6 +14,7 @@
{% block content %}
<div class="content support">
<div class="content__header">Support {{ config('general.name') }}</div>
<h1 style="font-size: 10em; line-height: 1.5em">redo this entirely</h1>
<div style="font-size: .9em; margin-bottom: 10px;">
<p>To keep the site and everything surrounding it running I need money to pay the bills, however instead of just having a donate button I decided on adding a premium system to the site which gives you a few extras. The premium rank is indentified on the site by Tenshi. More stuff that literally doesn't exist yet will be added to the list of featuring down the line but in order, the stuff that already exist can be seen further down on this page. With your help we can keep adding new stuff, get new hardware and keep the site awesome!</p>
</div>
@ -23,14 +24,15 @@
</div>
<div style="margin-bottom: 10px;">
<h3>Your Tenshi tag is valid till {{ user.premiumInfo.expire|date(config('general.date_format')) }}.</h3>
<progress value="{{ 100 - (((date().timestamp - user.premiumInfo.start) / (user.premiumInfo.expire - user.premiumInfo.start)) * 100) }}" max="100" style="width: 100%"></progress>
{# the progress bar is completely broken, not fixing it until i completely reviewed the premium system #}
{#<progress value="{{ 100 - (((date().timestamp - user.premiumInfo.start) / (user.premiumInfo.expire - user.premiumInfo.start)) * 100) }}" max="100" style="width: 100%"></progress>#}
</div>
{% endif %}
<div class="sectionHeader">
Why should I get Tenshi?
</div>
<div class="featureParent">
{% for k,v in features %}
{% for k, v in features %}
<div class="featureBox">
<div class="featureBoxIcon fa fa-{{ k }}"></div>
<div class="featureBoxDesc">{{ v|raw }}</div>
@ -48,14 +50,6 @@
Payment Options
<div style="float: right; font-size: 10px; text-align: right;">
Our transactions are handled through PayPal.
<div class="paymentOptions fa">
<div class="fa-cc-paypal"></div>
<div class="fa-cc-visa"></div>
<div class="fa-cc-mastercard"></div>
<div class="fa-cc-discover"></div>
<div class="fa-cc-amex"></div>
<div class="clear"></div>
</div>
</div>
</div>
{% if user.isActive and user.verified %}

View file

@ -7,17 +7,16 @@
{% endblock %}
{% block settingsContent %}
<div class="friends-list">
<div style="text-align: center">
{% for rank in user.ranks %}
<form method="post" action="{{ route('settings.account.ranks') }}" class="friend-container {% if rank.id == user.mainRankId %}active{% endif %}">
<form method="post" action="{{ route('settings.account.ranks') }}" class="friend-box {% if rank.id == user.mainRankId %}friend-box--active{% endif %}">
<input type="hidden" name="session" value="{{ session_id() }}">
<input type="hidden" name="rank" value="{{ rank.id }}">
<button class="friends-list-data" name="mode" value="main">
<div class="friends-list-name" style="color: {{ rank.colour }};">{{ rank.name }}</div>
<button class="friend-box__container" name="mode" value="main">
<div class="friend-box__name" style="color: {{ rank.colour }}">{{ rank.name }}</div>
</button>
<div class="friends-list-actions">
<button title="{% if rank.id in locked %}You can't leave this rank{% else %}Leave rank{% endif %}" class="remove fill fa fa-{% if rank.id in locked %}shield{% else %}remove{% endif %}" name="mode" value="remove" {% if rank.id in locked %}disabled{% endif %}></button>
<div class="clear"></div>
<div class="friend-box__actions">
<button title="{% if rank.id in locked %}You can't leave this rank{% else %}Leave rank{% endif %}" class="friend-box__action friend-box__action--red fa fa-{% if rank.id in locked %}shield{% else %}remove{% endif %}" name="mode" value="remove" {% if rank.id in locked %}disabled{% endif %}></button>
</div>
</form>
{% endfor %}

View file

@ -13,16 +13,15 @@
{% block settingsContent %}
{% if friends|length %}
<div class="friends-list">
<div style="text-align: center">
{% for friend in friends[get.page|default(1) - 1] %}
<div class="friend-container" id="friendslist-friend-{{ friend.id }}">
<a class="friends-list-data" href="{{ route('user.profile', friend.id) }}">
<img src="{{ route('user.avatar', friend.id) }}" alt="{{ friend.username }}" class="friends-list-avatar avatar avatar--border" style="width: 150px; height: 150px;">
<div class="friends-list-name" style="color: {{ friend.colour }};">{{ friend.username }}</div>
<div class="friend-box" id="friendslist-friend-{{ friend.id }}">
<a class="friend-box__container" href="{{ route('user.profile', friend.id) }}">
<div class="friend-box__avatar avatar avatar--border" style="background-image: url('{{ route('user.avatar', friend.id) }}')"></div>
<div class="friend-box__name" style="color: {{ friend.colour }};">{{ friend.username }}</div>
</a>
<div class="friends-list-actions">
<a class="remove fill fa fa-remove" title="Remove friend" href="javascript:void(0);" onclick="Sakura.Friend.Remove({{ friend.id }});"></a>
<div class="clear"></div>
<div class="friend-box__actions">
<a class="friend-box__action friend-box__action--red fa fa-remove" title="Remove friend" href="javascript:void(0);" onclick="Sakura.Friend.Remove({{ friend.id }});"></a>
</div>
</div>
{% endfor %}

View file

@ -13,17 +13,16 @@
{% block settingsContent %}
{% if friends|length %}
<div class="friends-list">
<div style="text-align: center">
{% for friend in friends[get.page|default(1) - 1] %}
<div class="friend-container" id="friend-{{ friend.id }}">
<a class="friends-list-data" href="{{ route('user.profile', friend.id) }}">
<img src="{{ route('user.avatar', friend.id) }}" alt="{{ friend.username }}" class="friends-list-avatar avatar avatar--border" style="width: 150px; height: 150px;">
<div class="friends-list-name" style="color: {{ friend.colour }};">{{ friend.username }}</div>
<div class="friend-box" id="friend-{{ friend.id }}">
<a class="friend-box__container" href="{{ route('user.profile', friend.id) }}">
<div class="friend-box__avatar avatar avatar--border" style="background-image: url('{{ route('user.avatar', friend.id) }}')"></div>
<div class="friend-box__name" style="color: {{ friend.colour }};">{{ friend.username }}</div>
</a>
<div class="friends-list-actions">
<a class="add fa fa-check" title="Add friend" href="javascript:void(0);" onclick="Sakura.Friend.Add({{ friend.id }});"></a>
<a class="remove fa fa-remove" title="Remove friend" href="javascript:void(0);" onclick="Sakura.Friend.Remove({{ friend.id }});"></a>
<div class="clear"></div>
<div class="friend-box__actions">
<a class="friend-box__action friend-box__action--green fa fa-check" title="Add friend" href="javascript:void(0);" onclick="Sakura.Friend.Add({{ friend.id }});"></a>
<a class="friend-box__action friend-box__action--red fa fa-remove" title="Remove friend" href="javascript:void(0);" onclick="Sakura.Friend.Remove({{ friend.id }});"></a>
</div>
</div>
{% endfor %}