Big commit
This commit is contained in:
parent
7ee70b3966
commit
31072687c8
19 changed files with 425 additions and 138 deletions
|
@ -36,7 +36,8 @@
|
|||
"20150707",
|
||||
"20150725",
|
||||
"20150728",
|
||||
"20150730"
|
||||
"20150730",
|
||||
"20150731"
|
||||
|
||||
]
|
||||
|
||||
|
@ -1569,6 +1570,55 @@
|
|||
"change": "Added draft for posting page."
|
||||
}
|
||||
|
||||
],
|
||||
|
||||
"20150731": [
|
||||
|
||||
{
|
||||
"type": "UPD",
|
||||
"change": "Redid footer links and styling."
|
||||
},
|
||||
{
|
||||
"type": "FIX",
|
||||
"change": "Fixed an issue with linking to people's websites on the credits page."
|
||||
},
|
||||
{
|
||||
"type": "ADD",
|
||||
"change": "Added pagination to news page."
|
||||
},
|
||||
{
|
||||
"type": "FIX",
|
||||
"change": "Put pagination in own class."
|
||||
},
|
||||
{
|
||||
"type": "UPD",
|
||||
"change": "Implemented global pagination style on member list page."
|
||||
},
|
||||
{
|
||||
"type": "REM",
|
||||
"change": "Removed mention of Flashii in news page title."
|
||||
},
|
||||
{
|
||||
"type": "FIX",
|
||||
"change": "Fixed positioning bug on the notification history page."
|
||||
},
|
||||
{
|
||||
"type": "ADD",
|
||||
"change": "Added pagination to notification history page."
|
||||
},
|
||||
{
|
||||
"type": "ADD",
|
||||
"change": "Added friend management page."
|
||||
},
|
||||
{
|
||||
"type": "FIX",
|
||||
"change": "Fixed removing a friend not removing the request."
|
||||
},
|
||||
{
|
||||
"type": "FIX",
|
||||
"change": "Fixed pending friend requests function returning mutual friends instead of requests."
|
||||
}
|
||||
|
||||
]
|
||||
|
||||
}
|
||||
|
|
|
@ -1297,7 +1297,7 @@ class Users {
|
|||
}
|
||||
|
||||
// Get friends
|
||||
public static function getFriends($uid = null, $timestamps = false) {
|
||||
public static function getFriends($uid = null, $timestamps = false, $getData = false) {
|
||||
|
||||
// Assign $uid
|
||||
if(!$uid)
|
||||
|
@ -1315,7 +1315,12 @@ class Users {
|
|||
foreach($getFriends as $key => $friend) {
|
||||
|
||||
// Add friend to array
|
||||
$friends[($timestamps ? $friend['fid'] : $key)] = $friend[($timestamps ? 'timestamp' : 'fid')];
|
||||
$friends[($timestamps ? $friend['fid'] : $key)] = $getData ? ([
|
||||
|
||||
'user' => ($_UDATA = self::getUser($friend['fid'])),
|
||||
'rank' => self::getRank($_UDATA['rank_main'])
|
||||
|
||||
]) : $friend[($timestamps ? 'timestamp' : 'fid')];
|
||||
|
||||
}
|
||||
|
||||
|
@ -1325,7 +1330,7 @@ class Users {
|
|||
}
|
||||
|
||||
// Get non-mutual friends
|
||||
public static function getPendingFriends($uid = null) {
|
||||
public static function getPendingFriends($uid = null, $getData = false) {
|
||||
|
||||
// Assign $of automatically if it's not set
|
||||
if(!$uid)
|
||||
|
@ -1343,8 +1348,16 @@ class Users {
|
|||
foreach($friends as $friend) {
|
||||
|
||||
// Check if the friend is mutual
|
||||
if(!self::checkFriend($friend, $uid))
|
||||
$pending[] = $friend;
|
||||
if(!self::checkFriend($friend['uid'], $uid)) {
|
||||
|
||||
$pending[] = $getData ? ([
|
||||
|
||||
'user' => ($_UDATA = self::getUser($friend['uid'])),
|
||||
'rank' => self::getRank($_UDATA['rank_main'])
|
||||
|
||||
]) : $friend;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -1403,7 +1416,7 @@ class Users {
|
|||
}
|
||||
|
||||
// Removing a friend
|
||||
public static function removeFriend($uid) {
|
||||
public static function removeFriend($uid, $deleteRequest = false) {
|
||||
|
||||
// Check if the user has this user a friend
|
||||
if(!Database::fetch('friends', false, ['fid' => [$uid, '='], 'uid' => [Session::$userId, '=']]))
|
||||
|
@ -1415,6 +1428,16 @@ class Users {
|
|||
'fid' => [$uid, '=']
|
||||
]);
|
||||
|
||||
// Attempt to remove the request
|
||||
if($deleteRequest) {
|
||||
|
||||
Database::delete('friends', [
|
||||
'fid' => [Session::$userId, '='],
|
||||
'uid' => [$uid, '=']
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
// Return true because yay
|
||||
return [1, 'REMOVED'];
|
||||
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
namespace Sakura;
|
||||
|
||||
// Define Sakura version
|
||||
define('SAKURA_VERSION', '20150730');
|
||||
define('SAKURA_VERSION', '20150731');
|
||||
define('SAKURA_VLABEL', 'Eminence');
|
||||
define('SAKURA_STABLE', false);
|
||||
define('SAKURA_COLOUR', '#6C3082');
|
||||
define('SAKURA_STABLE', false);
|
||||
|
||||
// Define Sakura Path
|
||||
define('ROOT', str_replace(basename(__DIR__), '', dirname(__FILE__)));
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{% if newsPosts|length > 1 %}<a href="/news/{{ newsPost.id }}" class="news-head" id="n{{ newsPost.id }}">{{ newsPost.title }}</a>{% endif %}
|
||||
{% if not page.view_post %}<a href="/news/{{ newsPost.id }}" class="news-head" id="n{{ newsPost.id }}">{{ newsPost.title }}</a>{% endif %}
|
||||
<div class="news-body">
|
||||
<a class="no-underline" href="/u/{{ newsPost.uid }}">
|
||||
<div class="news-poster">
|
||||
|
@ -12,5 +12,5 @@
|
|||
</div>
|
||||
<div class="clear"></div>
|
||||
<div class="news-post-time">
|
||||
Posted on {{ newsPost.date|date(sakura.date_format) }}{% if newsPosts|length > 1 %} <a class="default" href="/news/{{ newsPost.id }}#disqus_thread">View comments</a>{% endif %}
|
||||
Posted on {{ newsPost.date|date(sakura.date_format) }}{% if not page.view_post %} <a class="default" href="/news/{{ newsPost.id }}#disqus_thread">View comments</a>{% endif %}
|
||||
</div>
|
||||
|
|
|
@ -5,8 +5,10 @@
|
|||
<div>General</div>
|
||||
<a href="/settings/">Home</a>
|
||||
<a href="/settings/profile">Edit Profile</a>
|
||||
<a href="/settings/friends">Friends</a>
|
||||
<a href="/settings/groups">Groups</a>
|
||||
<div>Friends</div>
|
||||
<a href="/settings/friends">List</a>
|
||||
<a href="/settings/friendrequests">Requests</a>
|
||||
<div>Messages</div>
|
||||
<a href="/messages/inbox">Inbox</a>
|
||||
<a href="/messages/sent">Sent</a>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<div class="buttonRow">
|
||||
<div class="buttonRow pagination">
|
||||
<div class="leftSide">
|
||||
<a href="/forum/{% if board.viewtopic %}{{ topic.forum_id }}/{% endif %}" class="forumbtn"><span class="fa fa-backward"></span> Back</a>
|
||||
{% if board.viewtopic %}
|
||||
|
@ -18,4 +18,4 @@
|
|||
<a href="#" class="forumbtn"><span class="fa fa-step-forward"></span></a>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<a class="fa fa-trash" title="Delete this post" href="/forum/post/{{ post.post_id }}/delete"></a>
|
||||
{% else %}
|
||||
{% if post.is_friend != 0 %}<a class="fa fa-{% if post.is_friend == 2 %}heart{% else %}star{% endif %}" title="You are friends"></a>{% endif %}
|
||||
<a class="fa fa-user-{% if post.is_friend == 0 %}plus{% else %}times{% endif %}" title="{% if post.is_friend == 0 %}Add {{ post.user.username }} as a friend{% else %}Remove friend{% endif %}" href="//{{ sakura.urls.main }}/friends?{% if post.is_friend == 0 %}add{% else %}remove{% endif %}={{ post.user.id }}&session={{ php.sessionid }}&time={{ php.time }}&redirect=/forum/post/{{ post.post_id }}%23p{{ post.post_id }}"></a>
|
||||
<a class="fa fa-user-{% if post.is_friend == 0 %}plus{% else %}times{% endif %}" title="{% if post.is_friend == 0 %}Add {{ post.user.username }} as a friend{% else %}Remove friend{% endif %}" href="//{{ sakura.urls.main }}/friends?{% if post.is_friend == 0 %}add{% else %}remove{% endif %}={{ post.user.id }}&session={{ php.sessionid }}&time={{ php.time }}&redirect=/forum/post/{{ post.post_id }}%23p{{ post.post_id }}&direct=true"></a>
|
||||
<a class="fa fa-flag" title="Report {{ post.user.username }}" href="//{{ sakura.urls.main }}/u/{{ post.user.id }}/report"></a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
|
|
|
@ -7,25 +7,26 @@
|
|||
<li class="fthead">General</li>
|
||||
<li><a href="//{{ sakura.urls.main }}/" title="Flashii Frontpage">Home</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/news" title="Flashii News & Updates">News</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/contact" title="Contact Flashii Staff">Contact</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/r/terms" title="Our Terms of Service">Terms of Service</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/r/rules" title="Some Rules and Information kind of summing up the ToS">Rules and Information</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/faq" title="Questions that get Asked Frequently but not actually">Frequently Asked Questions</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/search" title="Do full-site search requests">Search</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/contact" title="Contact our Staff">Contact</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/changelog" title="All the changes made to Sakura are listed here">Changelog</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/feedback" target="_blank" title="Give us feedback on what to do">Feedback</a></li>
|
||||
</ul>
|
||||
<ul class="ftsection">
|
||||
<li class="fthead">Search, Status & Social</li>
|
||||
<li><a href="//{{ sakura.urls.main }}/search" title="Do full-site search requests">Search</a></li>
|
||||
<li><a href="http://status.flashii.net" target="_blank" title="Check the status on the Flashii Server and related services">Server Status</a></li>
|
||||
<li class="fthead">Community</li>
|
||||
<li><a href="//{{ sakura.urls.main }}/forum" title="Read and post on our forums">Forums</a></li>
|
||||
<li><a href="https://twitter.com/_flashii" target="_blank" title="Follow us on Twitter for news messages that are too short for the news page">Twitter</a></li>
|
||||
<li><a href="https://youtube.com/user/flashiinet" target="_blank" title="Our YouTube page where stuff barely ever gets uploaded, mainly used to archive community creations">YouTube</a></li>
|
||||
<li><a href="//steamcommunity.com/groups/flashiinet" target="_blank" title="Our Steam group, play games with other members on the site">Steam</a></li>
|
||||
<li><a href="https://github.com/circlestorm" target="_blank" title="Our Open Source repository thing">Github</a></li>
|
||||
</ul>
|
||||
<ul class="ftsection">
|
||||
<li class="fthead">Contribution</li>
|
||||
<li><a href="//{{ sakura.urls.main }}/changelog" title="All the changes made to Sakura are listed here">Changelog</a></li>
|
||||
<li class="fthead">Information</li>
|
||||
<li><a href="//{{ sakura.urls.main }}/faq" title="Questions that get Asked Frequently but not actually">FAQ</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/r/rules" title="Some Rules and Information kind of summing up the ToS">Rules</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/credits" title="Here everyone who's helped Flashii get to where it is now is listed">Credits</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/feedback" target="_blank" title="Give us feedback on what to do">Feedback & Suggestions</a></li>
|
||||
<li><a href="https://github.com/circlestorm" target="_blank" title="Our Open Source repository thing">Github</a></li>
|
||||
<li><a href="http://status.flashii.net" target="_blank" title="Check the status on our Servers and related services">Server Status</a></li>
|
||||
<li><a href="//{{ sakura.urls.main }}/r/terms" title="Our Terms of Service">Terms of Service</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -213,6 +213,7 @@
|
|||
<a class="menu-item" href="//{{ sakura.urls.main }}/forum" title="Discuss things with other members but static">Forums</a>
|
||||
<a class="menu-item" href="//{{ sakura.urls.main }}/search" title="Search on Flashii">Search</a>
|
||||
{% if user.checklogin %}
|
||||
<a class="menu-item" href="//{{ sakura.urls.main }}/members" title="View a list with all the activated user accounts">Members</a>
|
||||
<a class="menu-item menu-donate" href="//{{ sakura.urls.main }}/support" title="Give us money to keep the site (and other services) up and running">Support us</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
@ -220,7 +221,6 @@
|
|||
<!-- User menu, displayed on right side of the bar. -->
|
||||
{% if user.checklogin %}
|
||||
<a class="menu-item avatar" href="//{{ sakura.urls.main }}/u/{{ user.data.id }}" title="View and edit your own profile" style="background-image: url('//{{ sakura.urls.main }}/a/{{ user.data.id }}'); width: auto; color: {{ user.colour }}; font-weight: 700;">{{ user.data.username }}</a>
|
||||
<a class="menu-item" href="//{{ sakura.urls.main }}/members" title="View a list with all the activated user accounts">Members</a>
|
||||
<a class="menu-item" href="//{{ sakura.urls.main }}/messages" title="Read your private message">Messages</a>
|
||||
<a class="menu-item" href="//{{ sakura.urls.main }}/manage" title="Manage the site">Manage</a>
|
||||
<a class="menu-item" href="//{{ sakura.urls.main }}/settings" title="Change your settings">Settings</a>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<tbody>
|
||||
{% for contribname, contributor in contributors %}
|
||||
<tr>
|
||||
<td><a href="{{ contributors[1] }}" target="_blank">{{ contribname }}</a></td>
|
||||
<td><a href="{{ contributor[1] }}" target="_blank">{{ contribname }}</a></td>
|
||||
<td>{{ contributor[0] }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
|
|
@ -84,11 +84,17 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
{% if page.users|length > 1 %}
|
||||
<h2 style="cursor: default;">[
|
||||
<div class="pagination">
|
||||
{% if page.page > 0 %}
|
||||
<a href="/members/{% if page.sort != page.sorts[0] %}{{ page.sort }}/{% endif %}{% if page.active %}{{ page.active }}/{% endif %}p{{ page.page }}"><span class="fa fa-step-backward"></span></a>
|
||||
{% endif %}
|
||||
{% for count,navpage in page.users %}
|
||||
<a href="/members/{% if page.sort != page.sorts[0] %}{{ page.sort }}/{% endif %}{% if page.active %}{{ page.active }}/{% endif %}p{{ count + 1 }}" class="default">{{ count + 1 }}</a>
|
||||
<a href="/members/{% if page.sort != page.sorts[0] %}{{ page.sort }}/{% endif %}{% if page.active %}{{ page.active }}/{% endif %}p{{ count + 1 }}"{% if count == page.page %} class="current"{% endif %}>{{ count + 1 }}</a>
|
||||
{% endfor %}
|
||||
]</h2>
|
||||
{% if page.page + 1 < page.users|length %}
|
||||
<a href="/members/{% if page.sort != page.sorts[0] %}{{ page.sort }}/{% endif %}{% if page.active %}{{ page.active }}/{% endif %}p{{ page.page + 2 }}"><span class="fa fa-step-forward"></span></a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
|
|
|
@ -1,11 +1,33 @@
|
|||
{% include 'global/header.tpl' %}
|
||||
<div class="content">
|
||||
<div class="content-column news">
|
||||
<div class="head">{% if newsPosts|length == 1 %}{{ newsPosts[0].title }}{% elseif newsPosts|length < 1 %}Post does not exist!{% else %}News <a href="/news.xml" class="fa fa-rss news-rss default"></a>{% endif %}</div>
|
||||
<div class="head">{% if page.view_post %}{{ newsPosts[0].title }}{% elseif newsPosts|length < 1 %}Post does not exist!{% else %}News <a href="/news.xml" class="fa fa-rss news-rss default"></a>{% endif %}</div>
|
||||
{% if newsPosts|length >= 1 %}
|
||||
{% for newsPost in newsPosts %}
|
||||
{% include 'elements/newsPost.tpl' %}
|
||||
{% endfor %}
|
||||
{% if page.view_post %}
|
||||
{% for newsPost in newsPosts %}
|
||||
{% include 'elements/newsPost.tpl' %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% for newsPost in newsPosts[page.currentPage] %}
|
||||
{% include 'elements/newsPost.tpl' %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% if not page.view_post and newsPosts|length > 1 %}
|
||||
<div>
|
||||
<div class="pagination" style="float: right;">
|
||||
{% if page.currentPage > 0 %}
|
||||
<a href="/news/p{{ page.currentPage }}"><span class="fa fa-step-backward"></span></a>
|
||||
{% endif %}
|
||||
{% for id,npage in newsPosts %}
|
||||
<a href="/news/p{{ id + 1 }}"{% if id == page.currentPage %} class="current"{% endif %}>{{ id + 1 }}</a>
|
||||
{% endfor %}
|
||||
{% if page.currentPage + 1 < newsPosts|length %}
|
||||
<a href="/news/p{{ page.currentPage + 2 }}"><span class="fa fa-step-forward"></span></a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<div style="padding: 20px;">
|
||||
<h1>The requested news post does not exist!</h1>
|
||||
|
@ -17,20 +39,7 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if newsPosts|length > 1 %}
|
||||
<script type="text/javascript">
|
||||
|
||||
var disqus_shortname = '{{ sakura.disqus_shortname }}';
|
||||
|
||||
(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>
|
||||
{% elseif newsPosts|length == 1 %}
|
||||
{% if page.view_post %}
|
||||
<div id="disqus_thread">
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
|
@ -54,6 +63,19 @@
|
|||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
|
||||
{% else %}
|
||||
<script type="text/javascript">
|
||||
|
||||
var disqus_shortname = '{{ sakura.disqus_shortname }}';
|
||||
|
||||
(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>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
|
|
52
_sakura/templates/yuuno/settings/friendrequests.tpl
Normal file
52
_sakura/templates/yuuno/settings/friendrequests.tpl
Normal file
|
@ -0,0 +1,52 @@
|
|||
{% include 'global/header.tpl' %}
|
||||
<div class="content settings">
|
||||
<div class="content-right content-column">
|
||||
{% include 'elements/settingsNav.tpl' %}
|
||||
</div>
|
||||
<div class="content-left content-column">
|
||||
<div class="head">
|
||||
{{ page.title }}
|
||||
</div>
|
||||
<div class="settings-explanation">
|
||||
<div>Handle friend requests.</div>
|
||||
</div>
|
||||
{% if friends|length %}
|
||||
<div class="friends-list">
|
||||
{% for friend in friends[page.currentPage] %}
|
||||
<div class="friend-container" id="friend-{{ friend.user.id }}">
|
||||
<a class="friends-list-data clean" href="/u/{{ friend.user.id }}">
|
||||
<img src="/a/{{ friend.user.id }}" alt="{{ friend.user.username }}" class="friends-list-avatar default-avatar-setting" style="width: 150px; height: 150px;" />
|
||||
<div class="friends-list-name" style="color: {% if friend.user.name_colour %}{{ friend.user.name_colour }}{% else %}{{ friend.rank.colour }}{% endif %};">{{ friend.user.username }}</div>
|
||||
</a>
|
||||
<div class="friends-list-actions">
|
||||
<a class="add fa fa-check" title="Add friend" href="//{{ sakura.urls.main }}/friends?add={{ friend.user.id }}&session={{ php.sessionid }}&time={{ php.time }}&redirect=//{{ sakura.urls.main }}/settings/friendrequests&direct=true"></a>
|
||||
<a class="remove fa fa-remove" title="Remove friend" href="//{{ sakura.urls.main }}/friends?remove={{ friend.user.id }}&session={{ php.sessionid }}&time={{ php.time }}&redirect=//{{ sakura.urls.main }}/settings/friendrequests&direct=true"></a>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{% if friends|length > 1 %}
|
||||
<div>
|
||||
<div class="pagination" style="float: right;">
|
||||
{% if page.currentPage > 0 %}
|
||||
<a href="/settings/friends/p{{ page.currentPage }}"><span class="fa fa-step-backward"></span></a>
|
||||
{% endif %}
|
||||
{% for id,npage in friends %}
|
||||
<a href="/settings/friends/p{{ id + 1 }}"{% if id == page.currentPage %} class="current"{% endif %}>{{ id + 1 }}</a>
|
||||
{% endfor %}
|
||||
{% if page.currentPage + 1 < friends|length %}
|
||||
<a href="/settings/friends/p{{ page.currentPage + 2 }}"><span class="fa fa-step-forward"></span></a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<h1 class="stylised" style="margin: 2em auto; text-align: center;">You don't have any pending requests!</h1>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{% include 'global/footer.tpl' %}
|
|
@ -1,5 +1,5 @@
|
|||
{% include 'global/header.tpl' %}
|
||||
<div class="content settings messages">
|
||||
<div class="content settings">
|
||||
<div class="content-right content-column">
|
||||
{% include 'elements/settingsNav.tpl' %}
|
||||
</div>
|
||||
|
@ -10,7 +10,41 @@
|
|||
<div class="settings-explanation">
|
||||
<div>Manage your friends.</div>
|
||||
</div>
|
||||
|
||||
{% if friends|length %}
|
||||
<div class="friends-list">
|
||||
{% for friend in friends[page.currentPage] %}
|
||||
<div class="friend-container" id="friend-{{ friend.user.id }}">
|
||||
<a class="friends-list-data clean" href="/u/{{ friend.user.id }}">
|
||||
<img src="/a/{{ friend.user.id }}" alt="{{ friend.user.username }}" class="friends-list-avatar default-avatar-setting" style="width: 150px; height: 150px;" />
|
||||
<div class="friends-list-name" style="color: {% if friend.user.name_colour %}{{ friend.user.name_colour }}{% else %}{{ friend.rank.colour }}{% endif %};">{{ friend.user.username }}</div>
|
||||
</a>
|
||||
<div class="friends-list-actions">
|
||||
<a class="remove fill fa fa-remove" title="Remove friend" href="//{{ sakura.urls.main }}/friends?remove={{ friend.user.id }}&session={{ php.sessionid }}&time={{ php.time }}&redirect=//{{ sakura.urls.main }}/settings/friends&direct=true"></a>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{% if friends|length > 1 %}
|
||||
<div>
|
||||
<div class="pagination" style="float: right;">
|
||||
{% if page.currentPage > 0 %}
|
||||
<a href="/settings/friends/p{{ page.currentPage }}"><span class="fa fa-step-backward"></span></a>
|
||||
{% endif %}
|
||||
{% for id,npage in friends %}
|
||||
<a href="/settings/friends/p{{ id + 1 }}"{% if id == page.currentPage %} class="current"{% endif %}>{{ id + 1 }}</a>
|
||||
{% endfor %}
|
||||
{% if page.currentPage + 1 < friends|length %}
|
||||
<a href="/settings/friends/p{{ page.currentPage + 2 }}"><span class="fa fa-step-forward"></span></a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<h1 class="stylised" style="margin: 2em auto; text-align: center;">You don't have any friends yet!</h1>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
This is the history of notifications that have been sent to you.
|
||||
</div>
|
||||
<div class="notification-history">
|
||||
{% for notif in notifs %}
|
||||
<div id="notif-hist-{{ notif.id }}" class="{% if notif.notif_read %}read{% endif %}">
|
||||
{% for notif in notifs[page.currentPage] %}
|
||||
<a id="notif-hist-{{ notif.id }}" class="clean {% if notif.notif_read %}read{% endif %}"{% if notif.notif_link %} href="{{ notif.notif_link }}"{% endif %}>
|
||||
<div class="notif-hist-icon">
|
||||
{% if 'FONT:' in notif.notif_img %}
|
||||
<div class="font-icon fa {{ notif.notif_img|replace({'FONT:': ''}) }} fa-4x"></div>
|
||||
|
@ -21,25 +21,38 @@
|
|||
{% endif %}
|
||||
</div>
|
||||
<div class="notif-hist-content">
|
||||
<div class="notif-hist-time">
|
||||
{{ notif.timestamp|date("r") }}
|
||||
</div>
|
||||
<div class="notif-hist-inside">
|
||||
<div class="notif-hist-title">
|
||||
{{ notif.notif_title }}
|
||||
</div>
|
||||
<div class="notif-hist-text">
|
||||
{{ notif.notif_text }}
|
||||
{% if notif.notif_link %}
|
||||
| <a href="{{ notif.notif_link }}" class="default">Go</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="notif-hist-time">
|
||||
{{ notif.timestamp|date(sakura.date_format) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% if notifs|length > 1 %}
|
||||
<div>
|
||||
<div class="pagination" style="float: right;">
|
||||
{% if page.currentPage > 0 %}
|
||||
<a href="/settings/notifications/p{{ page.currentPage }}"><span class="fa fa-step-backward"></span></a>
|
||||
{% endif %}
|
||||
{% for id,npage in notifs %}
|
||||
<a href="/settings/notifications/p{{ id + 1 }}"{% if id == page.currentPage %} class="current"{% endif %}>{{ id + 1 }}</a>
|
||||
{% endfor %}
|
||||
{% if page.currentPage + 1 < notifs|length %}
|
||||
<a href="/settings/notifications/p{{ page.currentPage + 2 }}"><span class="fa fa-step-forward"></span></a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
|
|
@ -120,30 +120,8 @@ body {
|
|||
padding-bottom: 220px;
|
||||
}
|
||||
|
||||
@media (max-width: 642px) {
|
||||
|
||||
#contentwrapper {
|
||||
padding-bottom: 335px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media (max-width: 426px) {
|
||||
|
||||
#contentwrapper {
|
||||
padding-bottom: 450px;
|
||||
}
|
||||
|
||||
}
|
||||
@media (max-width: 400px) {
|
||||
|
||||
#contentwrapper {
|
||||
padding-bottom: 450px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media (max-width: 300px) {
|
||||
/* Can't be bothered to figure this out since it'll spazz out anyway */
|
||||
@media (max-width: 650px) {
|
||||
|
||||
.footer {
|
||||
display: none;
|
||||
|
@ -762,21 +740,24 @@ a.gotop.exit {
|
|||
text-align: left;
|
||||
display: inline-block;
|
||||
width: 200px;
|
||||
list-style-type: none;
|
||||
list-style: square;
|
||||
}
|
||||
|
||||
.footer .ftsections .ftsection li {
|
||||
margin: 2px;
|
||||
margin: 2px 2px 2px 16px;
|
||||
}
|
||||
|
||||
.footer .ftsections .ftsection li.fthead {
|
||||
margin-bottom: 5px;
|
||||
margin: 2px 2px 5px;
|
||||
font-weight: 700;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.footer .sections .copycentre {
|
||||
.footer .ftsections .copycentre {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
font-size: .9em;
|
||||
line-height: 1.8em;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -973,7 +954,7 @@ a.gotop.exit {
|
|||
text-align: right;
|
||||
}
|
||||
|
||||
#notifications > div {
|
||||
#notifications > div {
|
||||
cursor: pointer;
|
||||
text-align: left;
|
||||
display: inline-block;
|
||||
|
@ -1310,13 +1291,14 @@ a.gotop.exit {
|
|||
overflow: auto;
|
||||
}
|
||||
|
||||
.settings .notification-history > div {
|
||||
.settings .notification-history > a {
|
||||
border: 1px solid #507;
|
||||
margin: 5px;
|
||||
background: rgba(113, 74, 150, .3);
|
||||
display: block;
|
||||
}
|
||||
|
||||
.settings .notification-history > div > .notif-hist-icon {
|
||||
.settings .notification-history > a > .notif-hist-icon {
|
||||
float: left;
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
|
@ -1327,11 +1309,11 @@ a.gotop.exit {
|
|||
color: #FFF;
|
||||
}
|
||||
|
||||
.settings .notification-history > div > .notif-hist-icon > .font-icon {
|
||||
.settings .notification-history > a > .notif-hist-icon > .font-icon {
|
||||
margin: .34em 0;
|
||||
}
|
||||
|
||||
.settings .notification-history > div > .notif-hist-content > .notif-hist-time {
|
||||
.settings .notification-history > a > .notif-hist-content > .notif-hist-time {
|
||||
font-style: italic;
|
||||
text-align: right;
|
||||
float: right;
|
||||
|
@ -1339,19 +1321,87 @@ a.gotop.exit {
|
|||
font-size: .8em;
|
||||
}
|
||||
|
||||
.settings .notification-history > div > .notif-hist-content > .notif-hist-inside {
|
||||
.settings .notification-history > a > .notif-hist-content > .notif-hist-inside {
|
||||
float: left;
|
||||
margin-left: 2px;
|
||||
padding-left: 8px;
|
||||
}
|
||||
|
||||
.settings .notification-history > div > .notif-hist-content > .notif-hist-inside > .notif-hist-title {
|
||||
.settings .notification-history > a > .notif-hist-content > .notif-hist-inside > .notif-hist-title {
|
||||
font-family: "SegoeUI", "Segoe UI", sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 1.7em;
|
||||
margin-top: 1em;
|
||||
}
|
||||
|
||||
.settings .friends-list > div:not(:last-child) {
|
||||
display: block;
|
||||
border: 1px solid #9475B2;
|
||||
text-align: center;
|
||||
width: 220px;
|
||||
margin: 0 2px 40px;
|
||||
float: left;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.settings .friends-list > div:not(:last-child):hover {
|
||||
margin-bottom: 6px;
|
||||
background: #C2AFFE;
|
||||
}
|
||||
|
||||
.settings .friends-list > div > .friends-list-data {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.settings .friends-list > div > .friends-list-data > .friends-list-name {
|
||||
font-size: 1.2em;
|
||||
line-height: 1.5em;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
.settings .friends-list > div > .friends-list-actions {
|
||||
display: none;
|
||||
background: linear-gradient(0deg, #9475B2, #C2AFFE) #9475B2;
|
||||
}
|
||||
|
||||
.settings .friends-list > div > .friends-list-actions > a {
|
||||
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 {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.settings .friends-list > div > .friends-list-actions > .remove:hover {
|
||||
color: #D00;
|
||||
}
|
||||
|
||||
.settings .friends-list > div > .friends-list-actions > .remove:active {
|
||||
color: #A00;
|
||||
}
|
||||
|
||||
.settings .friends-list > div > .friends-list-actions > .add:hover {
|
||||
color: #0D0;
|
||||
}
|
||||
|
||||
.settings .friends-list > div > .friends-list-actions > .add:active {
|
||||
color: #0A0;
|
||||
}
|
||||
|
||||
.settings .friends-list > div > .friends-list-actions > a {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.settings .friends-list > div > .friends-list-actions > .fill {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/*
|
||||
* Support page Styling
|
||||
*/
|
||||
|
@ -1658,26 +1708,6 @@ textarea.inputStyling {
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
.forum .forumbtn {
|
||||
background: linear-gradient(0deg, #9475B2 10%, #C2AFFE 90%);
|
||||
color: #306;
|
||||
padding: 4px 8px;
|
||||
text-decoration: none;
|
||||
border-radius: 2px;
|
||||
margin: 4px 2px;
|
||||
display: inline-block;
|
||||
font-size: 1.3em;
|
||||
border: 1px solid #9475B2;
|
||||
}
|
||||
|
||||
.forum .forumbtn:hover {
|
||||
background: linear-gradient(0deg, #9475B2 30%, #C2AFFE 70%);
|
||||
}
|
||||
|
||||
.forum .forumbtn:active {
|
||||
background: linear-gradient(180deg, #9475B2 30%, #C2AFFE 70%);
|
||||
}
|
||||
|
||||
.forum.viewtopic .posts {
|
||||
width: 100%;
|
||||
border-spacing: 0;
|
||||
|
@ -1827,6 +1857,33 @@ textarea.inputStyling {
|
|||
float: right;
|
||||
}
|
||||
|
||||
/*
|
||||
* Pagination
|
||||
*/
|
||||
.pagination a {
|
||||
background: linear-gradient(0deg, #9475B2 10%, #C2AFFE 90%);
|
||||
color: #306;
|
||||
padding: 4px 8px;
|
||||
text-decoration: none;
|
||||
border-radius: 2px;
|
||||
margin: 4px 2px;
|
||||
display: inline-block;
|
||||
font-size: 1.3em;
|
||||
border: 1px solid #9475B2;
|
||||
}
|
||||
|
||||
.pagination a.current {
|
||||
background: linear-gradient(0deg, #A586C3, #D3BFFF);
|
||||
}
|
||||
|
||||
.pagination a:hover {
|
||||
background: linear-gradient(0deg, #9475B2 30%, #C2AFFE 70%);
|
||||
}
|
||||
|
||||
.pagination a:active {
|
||||
background: linear-gradient(180deg, #9475B2 30%, #C2AFFE 70%);
|
||||
}
|
||||
|
||||
/*
|
||||
* Ban page styling
|
||||
*/
|
||||
|
|
|
@ -29,12 +29,14 @@ RewriteRule ^r/([a-z]+)$ infopage.php?r=$1 [L,QSA]
|
|||
|
||||
# News
|
||||
RewriteRule ^news/?$ news.php [L,QSA]
|
||||
RewriteRule ^news/p([0-9]+)$ news.php?page=$1 [L,QSA]
|
||||
RewriteRule ^news/([0-9]+)$ news.php?id=$1 [L,QSA]
|
||||
RewriteRule ^news.xml$ news.php?xml [L,QSA]
|
||||
|
||||
# Settings
|
||||
RewriteRule ^settings/?$ settings.php [L,QSA]
|
||||
RewriteRule ^settings/([a-z]+)/?$ settings.php?mode=$1 [L,QSA]
|
||||
RewriteRule ^settings/([a-z]+)/p([0-9]+)/?$ settings.php?mode=$1&page=$2 [L,QSA]
|
||||
RewriteRule ^friends/?$ settings.php?friend-action=true [L,QSA]
|
||||
|
||||
# Private Messages
|
||||
|
|
|
@ -27,8 +27,10 @@ $disqus_data = [
|
|||
// Add page specific things
|
||||
$renderData['newsPosts'] = Main::getNewsPosts((isset($_GET['id']) && !isset($_GET['xml']) && is_numeric($_GET['id'])) ? $_GET['id'] : null, (isset($_GET['id']) && !isset($_GET['xml']) && is_numeric($_GET['id'])));
|
||||
$renderData['page'] = [
|
||||
'title' => (isset($_GET['id']) ? (count($renderData['newsPosts']) ? $renderData['newsPosts'][0]['title'] : 'Post does not exist!') : 'Flashii News'),
|
||||
'disqus_sso' => (($disqus_message = base64_encode(json_encode($disqus_data))) .' '. Main::dsqHmacSha1($disqus_message .' '. time(), Configuration::getConfig('disqus_api_secret')) .' '. time())
|
||||
'title' => (isset($_GET['id']) ? (count($renderData['newsPosts']) ? $renderData['newsPosts'][0]['title'] : 'Post does not exist!') : 'News'),
|
||||
'disqus_sso' => (($disqus_message = base64_encode(json_encode($disqus_data))) .' '. Main::dsqHmacSha1($disqus_message .' '. time(), Configuration::getConfig('disqus_api_secret')) .' '. time()),
|
||||
'view_post' => isset($_GET['id']) && count($renderData['newsPosts']),
|
||||
'currentPage' => 0
|
||||
];
|
||||
|
||||
// News XML feed
|
||||
|
@ -133,5 +135,14 @@ if(isset($_GET['xml'])) {
|
|||
|
||||
}
|
||||
|
||||
// If we're not using the XML feed and we're not viewing a single post create pages
|
||||
if(!isset($_GET['id'])) {
|
||||
|
||||
// Create the current page
|
||||
$renderData['newsPosts'] = array_chunk($renderData['newsPosts'], Configuration::getConfig('news_posts_per_page'), true);
|
||||
$renderData['page']['currentPage'] = isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0;
|
||||
|
||||
}
|
||||
|
||||
// Print page contents
|
||||
print Templates::render('main/news.tpl', $renderData);
|
||||
|
|
|
@ -133,7 +133,7 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
|
|||
if($continue) {
|
||||
|
||||
// Execute the action
|
||||
$action = (isset($_REQUEST['add']) ? Users::addFriend($_REQUEST['add']) : Users::removeFriend($_REQUEST['remove']));
|
||||
$action = (isset($_REQUEST['add']) ? Users::addFriend($_REQUEST['add']) : Users::removeFriend($_REQUEST['remove'], true));
|
||||
|
||||
// Set the messages
|
||||
$messages = [
|
||||
|
@ -180,6 +180,13 @@ if(isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications
|
|||
|
||||
}
|
||||
|
||||
if(isset($_REQUEST['direct']) && $_REQUEST['direct'] && !isset($_REQUEST['ajax'])) {
|
||||
|
||||
header('Location: '. $renderData['page']['redirect']);
|
||||
exit;
|
||||
|
||||
}
|
||||
|
||||
// Print page contents or if the AJAX request is set only display the render data
|
||||
print isset($_REQUEST['ajax']) ?
|
||||
(
|
||||
|
@ -200,23 +207,24 @@ if(Users::checkLogin()) {
|
|||
|
||||
// Settings page list
|
||||
$pages = [
|
||||
'home' => ['General', 'Home'],
|
||||
'profile' => ['General', 'Edit Profile'],
|
||||
'friends' => ['General', 'Friends'],
|
||||
'groups' => ['General', 'Groups'],
|
||||
'notifications' => ['Notifications', 'History'],
|
||||
'avatar' => ['Aesthetics', 'Avatar'],
|
||||
'background' => ['Aesthetics', 'Background'],
|
||||
'page' => ['Aesthetics', 'Profile Page'],
|
||||
'email' => ['Account', 'E-mail Address'],
|
||||
'username' => ['Account', 'Username'],
|
||||
'usertitle' => ['Account', 'User Title'],
|
||||
'password' => ['Account', 'Password'],
|
||||
'ranks' => ['Account', 'Ranks'],
|
||||
'sessions' => ['Danger zone', 'Sessions'],
|
||||
'regkeys' => ['Danger zone', 'Registration Keys'],
|
||||
'deactivate' => ['Danger zone', 'Deactivate Account'],
|
||||
'notfound' => ['Settings', '404']
|
||||
'home' => ['General', 'Home'],
|
||||
'profile' => ['General', 'Edit Profile'],
|
||||
'groups' => ['General', 'Groups'],
|
||||
'friends' => ['Friends', 'List'],
|
||||
'friendrequests' => ['Friends', 'Requests'],
|
||||
'notifications' => ['Notifications', 'History'],
|
||||
'avatar' => ['Aesthetics', 'Avatar'],
|
||||
'background' => ['Aesthetics', 'Background'],
|
||||
'page' => ['Aesthetics', 'Profile Page'],
|
||||
'email' => ['Account', 'E-mail Address'],
|
||||
'username' => ['Account', 'Username'],
|
||||
'usertitle' => ['Account', 'User Title'],
|
||||
'password' => ['Account', 'Password'],
|
||||
'ranks' => ['Account', 'Ranks'],
|
||||
'sessions' => ['Danger zone', 'Sessions'],
|
||||
'regkeys' => ['Danger zone', 'Registration Keys'],
|
||||
'deactivate' => ['Danger zone', 'Deactivate Account'],
|
||||
'notfound' => ['Settings', '404']
|
||||
];
|
||||
|
||||
// Current settings page
|
||||
|
@ -224,7 +232,8 @@ if(Users::checkLogin()) {
|
|||
|
||||
// Render data
|
||||
$renderData['page'] = [
|
||||
'title' => $pages[$currentPage][0] .' / '. $pages[$currentPage][1]
|
||||
'title' => $pages[$currentPage][0] .' / '. $pages[$currentPage][1],
|
||||
'currentPage' => isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0
|
||||
];
|
||||
|
||||
// Section specific
|
||||
|
@ -240,12 +249,17 @@ if(Users::checkLogin()) {
|
|||
|
||||
// Friends
|
||||
case 'friends':
|
||||
$renderData['friends'] = Users::getFriends();
|
||||
$renderData['friends'] = array_chunk(array_reverse(Users::getFriends(null, true, true)), 12, true);
|
||||
break;
|
||||
|
||||
// Pending Friend Requests
|
||||
case 'friendrequests':
|
||||
$renderData['friends'] = array_chunk(array_reverse(Users::getPendingFriends(null, true)), 12, true);
|
||||
break;
|
||||
|
||||
// Notification history
|
||||
case 'notifications':
|
||||
$renderData['notifs'] = array_reverse(Users::getNotifications(null, 0, false, true));
|
||||
$renderData['notifs'] = array_chunk(array_reverse(Users::getNotifications(null, 0, false, true)), 10, true);
|
||||
break;
|
||||
|
||||
}
|
||||
|
|
Reference in a new issue