mirror of
https://github.com/twisterarmy/twister-html.git
synced 2025-01-27 15:14:40 +00:00
new users module
This commit is contained in:
parent
009c3651fc
commit
8893d79eed
@ -843,13 +843,13 @@ textarea.splited-post {
|
|||||||
/***********************************
|
/***********************************
|
||||||
********************* WHO TO FOLLOW
|
********************* WHO TO FOLLOW
|
||||||
***********************************/
|
***********************************/
|
||||||
.who-to-follow
|
.who-to-follow,
|
||||||
{
|
.new-users {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
.who-to-follow h3
|
.who-to-follow h3,
|
||||||
{
|
.new-users h3 {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
.twister-user
|
.twister-user
|
||||||
@ -1943,32 +1943,39 @@ ol.toptrends-list {
|
|||||||
********* WHO TO FOLLOW MODAL ********
|
********* WHO TO FOLLOW MODAL ********
|
||||||
**************************************/
|
**************************************/
|
||||||
|
|
||||||
.who-to-follow-modal ol {
|
.who-to-follow-modal ol,
|
||||||
|
.new-users-modal ol {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal .open-profile-modal:hover {
|
.who-to-follow-modal .open-profile-modal:hover,
|
||||||
|
.new-users-modal .open-profile-modal:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal .open-profile-modal span {
|
.who-to-follow-modal .open-profile-modal span,
|
||||||
|
.new-users-modal .open-profile-modal span {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal .open-profile-modal span:hover {
|
.who-to-follow-modal .open-profile-modal span:hover,
|
||||||
|
.new-users-modal .open-profile-modal span:hover {
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal .follow {
|
.who-to-follow-modal .follow,
|
||||||
|
.new-users-modal .follow {
|
||||||
float: right;
|
float: right;
|
||||||
margin: -30px 10px 0 10px;
|
margin: -30px 10px 0 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal .twister-user-info span {
|
.who-to-follow-modal .twister-user-info span,
|
||||||
|
.new-users-modal .twister-user-info span {
|
||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal .bio {
|
.who-to-follow-modal .bio,
|
||||||
|
.new-users-modal .bio {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: rgba( 0, 0, 0, .6 );
|
color: rgba( 0, 0, 0, .6 );
|
||||||
}
|
}
|
||||||
|
19
home.html
19
home.html
@ -146,6 +146,8 @@
|
|||||||
|
|
||||||
<!-- TWISTDAY REMINDER MODULE -->
|
<!-- TWISTDAY REMINDER MODULE -->
|
||||||
<div class="module twistday-reminder" style="display: none;"></div>
|
<div class="module twistday-reminder" style="display: none;"></div>
|
||||||
|
|
||||||
|
<div class="module new-users" style="display: none;"></div>
|
||||||
</div>
|
</div>
|
||||||
<!-- LADO ESQUERDO DE MÓDULOS END -->
|
<!-- LADO ESQUERDO DE MÓDULOS END -->
|
||||||
|
|
||||||
@ -227,6 +229,23 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- TEMPLATE OF NEW-USERS MODULE -->
|
||||||
|
<div id="new-users-template">
|
||||||
|
<div>
|
||||||
|
<h3 class="label">New Users</h3>
|
||||||
|
<small>.</small>
|
||||||
|
<a class="refresh-users">Refresh</a>
|
||||||
|
<small>.</small>
|
||||||
|
<a class="view-all-users" href="#newusers">View All</a>
|
||||||
|
<ol class="follow-suggestions">
|
||||||
|
<!-- use "follow-suggestion-template" here -->
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
<div class="loading-roller">
|
||||||
|
<div></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- TEMPLATE DE TOP TRENDS MODULE -->
|
<!-- TEMPLATE DE TOP TRENDS MODULE -->
|
||||||
<div id="toptrends-template">
|
<div id="toptrends-template">
|
||||||
<div>
|
<div>
|
||||||
|
@ -741,22 +741,7 @@ function fillWhoToFollowModal(list, hlist, start) {
|
|||||||
if (followingUsers.indexOf(utf) < 0 && list.indexOf(utf) < 0) {
|
if (followingUsers.indexOf(utf) < 0 && list.indexOf(utf) < 0) {
|
||||||
list.push(utf);
|
list.push(utf);
|
||||||
|
|
||||||
var item = itemTmp.clone(true);
|
processWhoToFollowSuggestion(hlist, utf, followingUsers[i]);
|
||||||
|
|
||||||
item.find('.twister-user-info').attr('data-screen-name', utf);
|
|
||||||
item.find('.twister-user-name').attr('href', $.MAL.userUrl(utf));
|
|
||||||
item.find('.twister-by-user-name').attr('href', $.MAL.userUrl(followingUsers[i]));
|
|
||||||
item.find('.twister-user-tag').text('@' + utf);
|
|
||||||
|
|
||||||
getAvatar(utf, item.find('.twister-user-photo'));
|
|
||||||
getFullname(utf, item.find('.twister-user-full'));
|
|
||||||
getBioToElem(utf, item.find('.bio'));
|
|
||||||
getFullname(followingUsers[i], item.find('.followed-by').text(followingUsers[i]));
|
|
||||||
getStatusTime(utf, item.find('.latest-activity .time'));
|
|
||||||
|
|
||||||
item.find('.twister-user-remove').remove();
|
|
||||||
|
|
||||||
hlist.append(item);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -782,12 +767,32 @@ function openWhoToFollowModal() {
|
|||||||
|
|
||||||
modal.content.on('scroll', function() {
|
modal.content.on('scroll', function() {
|
||||||
if (modal.content.scrollTop() >= hlist.height() - modal.content.height() - 20) {
|
if (modal.content.scrollTop() >= hlist.height() - modal.content.height() - 20) {
|
||||||
if (!fillWhoToFollowModal(tmplist, hlist, tmplist.length))
|
if (!fillWhoToFollowModal(tmplist, modal.self, tmplist.length))
|
||||||
modal.content.off('scroll');
|
modal.content.off('scroll');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
fillWhoToFollowModal(tmplist, hlist, 0);
|
fillWhoToFollowModal(tmplist, modal.self, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
function openNewUsersModal() {
|
||||||
|
var modal = openModal({
|
||||||
|
classAdd: 'new-users-modal',
|
||||||
|
title: polyglot.t('New Users')
|
||||||
|
});
|
||||||
|
|
||||||
|
var hlist = $('<ol class="follow-suggestions"></ol>')
|
||||||
|
.appendTo(modal.content);
|
||||||
|
var count = 10;
|
||||||
|
|
||||||
|
modal.content.on('scroll', function() {
|
||||||
|
if (modal.content.scrollTop() >= hlist.height() - modal.content.height() - 20) {
|
||||||
|
!getLastNUsers(5, count, modal.self);
|
||||||
|
count += 10;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
getLastNUsers(10, 0, modal.self);
|
||||||
}
|
}
|
||||||
|
|
||||||
function openModalUriShortener()
|
function openModalUriShortener()
|
||||||
@ -1237,6 +1242,8 @@ function loadModalFromHash() {
|
|||||||
openWhoToFollowModal();
|
openWhoToFollowModal();
|
||||||
else if (hashstring === '#/uri-shortener')
|
else if (hashstring === '#/uri-shortener')
|
||||||
openModalUriShortener();
|
openModalUriShortener();
|
||||||
|
else if (hashstring === '#newusers')
|
||||||
|
openNewUsersModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
function initHashWatching() {
|
function initHashWatching() {
|
||||||
|
@ -100,6 +100,11 @@ var InterfaceFunctions = function() {
|
|||||||
else
|
else
|
||||||
killInterfaceModule('who-to-follow');
|
killInterfaceModule('who-to-follow');
|
||||||
|
|
||||||
|
if ($.Options.NewUsers.val === 'enable')
|
||||||
|
initNewUsers();
|
||||||
|
else
|
||||||
|
killInterfaceModule('new-users');
|
||||||
|
|
||||||
if ($.Options.TwistdayReminder.val === 'enable')
|
if ($.Options.TwistdayReminder.val === 'enable')
|
||||||
initTwistdayReminder();
|
initTwistdayReminder();
|
||||||
else
|
else
|
||||||
@ -200,6 +205,29 @@ function refreshWhoToFollow() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function initNewUsers() {
|
||||||
|
var nus = initInterfaceModule('new-users');
|
||||||
|
|
||||||
|
if (nus.length) {
|
||||||
|
var nusRefresh = nus.find('.refresh-users');
|
||||||
|
nusRefresh.on('click', refreshNewUsers);
|
||||||
|
setTimeout(function() {nusRefresh.click();}, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function refreshNewUsers() {
|
||||||
|
var module = $('.module.new-users');
|
||||||
|
var list = module.find('.follow-suggestions');
|
||||||
|
|
||||||
|
if (list.length) {
|
||||||
|
list.empty().hide();
|
||||||
|
module.find('.refresh-users').hide();
|
||||||
|
module.find('.loading-roller').show();
|
||||||
|
|
||||||
|
getLastNUsers(3, 0, module);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function initTwistdayReminder() {
|
function initTwistdayReminder() {
|
||||||
var $module = initInterfaceModule('twistday-reminder');
|
var $module = initInterfaceModule('twistday-reminder');
|
||||||
|
|
||||||
|
@ -372,7 +372,8 @@ if(preferredLanguage == "en"){
|
|||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"fav_this": "Is it for you only?",
|
"fav_this": "Is it for you only?",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if(preferredLanguage == "es"){
|
if(preferredLanguage == "es"){
|
||||||
@ -717,7 +718,8 @@ if(preferredLanguage == "es"){
|
|||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"fav_this": "Is it for you only?",
|
"fav_this": "Is it for you only?",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1061,7 +1063,8 @@ if(preferredLanguage == "uk"){
|
|||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"fav_this": "Is it for you only?",
|
"fav_this": "Is it for you only?",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1410,7 +1413,8 @@ if(preferredLanguage == "zh-CN"){
|
|||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"fav_this": "Is it for you only?",
|
"fav_this": "Is it for you only?",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1756,7 +1760,8 @@ if(preferredLanguage == "nl"){
|
|||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"fav_this": "Is it for you only?",
|
"fav_this": "Is it for you only?",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2100,7 +2105,8 @@ if(preferredLanguage == "it"){
|
|||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"fav_this": "Is it for you only?",
|
"fav_this": "Is it for you only?",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2445,7 +2451,8 @@ if(preferredLanguage == "fr"){
|
|||||||
"users_favs": "Favorites of @%{username}",
|
"users_favs": "Favorites of @%{username}",
|
||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2797,7 +2804,8 @@ if(preferredLanguage == "ru"){
|
|||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"fav_this": "Is it for you only?",
|
"fav_this": "Is it for you only?",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3145,7 +3153,8 @@ if(preferredLanguage == "de"){
|
|||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"fav_this": "Is it for you only?",
|
"fav_this": "Is it for you only?",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3488,7 +3497,8 @@ if(preferredLanguage == "ja"){
|
|||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"fav_this": "Is it for you only?",
|
"fav_this": "Is it for you only?",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3837,7 +3847,8 @@ if(preferredLanguage == "pt-BR"){
|
|||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"fav_this": "Is it for you only?",
|
"fav_this": "Is it for you only?",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4182,7 +4193,8 @@ if(preferredLanguage == "tr"){
|
|||||||
"Favorites": "Favoriler",
|
"Favorites": "Favoriler",
|
||||||
"You have to log in to favorite messages.": "İletileri favorine eklemek için giriş yapmalısın.",
|
"You have to log in to favorite messages.": "İletileri favorine eklemek için giriş yapmalısın.",
|
||||||
"fav_this": "Sana özel mi?",
|
"fav_this": "Sana özel mi?",
|
||||||
"Last activity": "Son etkinlik"
|
"Last activity": "Son etkinlik",
|
||||||
|
"New Users": "Yeni Kullanıcılar"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4530,7 +4542,8 @@ if(preferredLanguage == "cs"){
|
|||||||
"Favorites": "Favorites",
|
"Favorites": "Favorites",
|
||||||
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
"You have to log in to favorite messages.": "You have to log in to favorite messages.",
|
||||||
"fav_this": "Is it for you only?",
|
"fav_this": "Is it for you only?",
|
||||||
"Last activity": "Last activity"
|
"Last activity": "Last activity",
|
||||||
|
"New Users": "New Users"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,6 +41,10 @@ function twisterOptions() {
|
|||||||
name: 'WhoToFollow',
|
name: 'WhoToFollow',
|
||||||
valDefault: 'enable'
|
valDefault: 'enable'
|
||||||
});
|
});
|
||||||
|
this.add({
|
||||||
|
name: 'NewUsers',
|
||||||
|
valDefault: 'enable'
|
||||||
|
});
|
||||||
this.add({
|
this.add({
|
||||||
name: 'TwistdayReminder',
|
name: 'TwistdayReminder',
|
||||||
valDefault: 'enable',
|
valDefault: 'enable',
|
||||||
|
@ -15,6 +15,8 @@ var _searchKeypressTimer = undefined;
|
|||||||
var _lastSearchUsersResults = [];
|
var _lastSearchUsersResults = [];
|
||||||
var _lastSearchUsersResultsRemovedFromDHTgetQueue = true;
|
var _lastSearchUsersResultsRemovedFromDHTgetQueue = true;
|
||||||
var _lastLoadFromDhtTime = 0;
|
var _lastLoadFromDhtTime = 0;
|
||||||
|
var _lastProcessedBlock = -1;
|
||||||
|
var knownNewUsers = [];
|
||||||
|
|
||||||
var twisterFollowingO = undefined;
|
var twisterFollowingO = undefined;
|
||||||
|
|
||||||
@ -427,6 +429,36 @@ function followingEmptyOrMyself() {
|
|||||||
return (!followingUsers.length || (followingUsers.length === 1 && followingUsers[0] === defaultScreenName))
|
return (!followingUsers.length || (followingUsers.length === 1 && followingUsers[0] === defaultScreenName))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getLastNUsers(n,offset,module) {
|
||||||
|
|
||||||
|
for (var i = offset; i < knownNewUsers.length && i < offset + n; i++)
|
||||||
|
processWhoToFollowSuggestion(module, knownNewUsers[i]);
|
||||||
|
|
||||||
|
if (knownNewUsers.length >= n + offset)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_lastProcessedBlock == -1)
|
||||||
|
requestBestBlock(processBlockUsers, {n: n, offset: offset, module: module});
|
||||||
|
else
|
||||||
|
requestNthBlock(_lastProcessedBlock - 1, processBlockUsers, {n: n, offset: offset, module: module});
|
||||||
|
}
|
||||||
|
|
||||||
|
function processBlockUsers(block, users){
|
||||||
|
_lastProcessedBlock = block.height;
|
||||||
|
|
||||||
|
if (knownNewUsers.length + block.usernames.length < users.n + users.offset)
|
||||||
|
setTimeout(function(){requestBlock(block.previousblockhash, processBlockUsers, users);}, 100);
|
||||||
|
|
||||||
|
for (var i = 0; i < block.usernames.length; i++) {
|
||||||
|
if (knownNewUsers.indexOf(block.usernames[i]) == -1) {
|
||||||
|
processWhoToFollowSuggestion(users.module, block.usernames[i]);
|
||||||
|
knownNewUsers.push(block.usernames[i]);
|
||||||
|
if (knownNewUsers.length >= users.n + users.offset)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// randomly choose a user we follow, get "following1" from him and them
|
// randomly choose a user we follow, get "following1" from him and them
|
||||||
// choose a suggestion from their list. this function could be way better, but
|
// choose a suggestion from their list. this function could be way better, but
|
||||||
// that's about the simplest we may get to start with.
|
// that's about the simplest we may get to start with.
|
||||||
@ -446,10 +478,11 @@ function getRandomFollowSuggestion() {
|
|||||||
|
|
||||||
var suggested = false;
|
var suggested = false;
|
||||||
var j = Math.floor(Math.random() * twisterFollowingO.followingsFollowings[followingUsers[i]].following.length);
|
var j = Math.floor(Math.random() * twisterFollowingO.followingsFollowings[followingUsers[i]].following.length);
|
||||||
|
var module = $('.module.who-to-follow');
|
||||||
for( ; j < twisterFollowingO.followingsFollowings[followingUsers[i]].following.length; j++ ) {
|
for( ; j < twisterFollowingO.followingsFollowings[followingUsers[i]].following.length; j++ ) {
|
||||||
if( followingUsers.indexOf(twisterFollowingO.followingsFollowings[followingUsers[i]].following[j]) < 0 &&
|
if( followingUsers.indexOf(twisterFollowingO.followingsFollowings[followingUsers[i]].following[j]) < 0 &&
|
||||||
_followSuggestions.indexOf(twisterFollowingO.followingsFollowings[followingUsers[i]].following[j]) < 0) {
|
_followSuggestions.indexOf(twisterFollowingO.followingsFollowings[followingUsers[i]].following[j]) < 0) {
|
||||||
processWhoToFollowSuggestion(twisterFollowingO.followingsFollowings[followingUsers[i]].following[j], followingUsers[i]);
|
processWhoToFollowSuggestion(module, twisterFollowingO.followingsFollowings[followingUsers[i]].following[j], followingUsers[i]);
|
||||||
_followSuggestions.push(twisterFollowingO.followingsFollowings[followingUsers[i]].following[j]);
|
_followSuggestions.push(twisterFollowingO.followingsFollowings[followingUsers[i]].following[j]);
|
||||||
suggested = true;
|
suggested = true;
|
||||||
break;
|
break;
|
||||||
@ -501,26 +534,37 @@ function getWhoFollows(peerAlias, elem) {
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
function processWhoToFollowSuggestion(suggestion, followedBy) {
|
function processWhoToFollowSuggestion(module, suggestion, followedBy) {
|
||||||
if (suggestion) {
|
if (suggestion) {
|
||||||
var module = $('.module.who-to-follow');
|
|
||||||
var list = module.find('.follow-suggestions');
|
var list = module.find('.follow-suggestions');
|
||||||
var item = $('#follow-suggestion-template').clone(true)
|
var item = $('#follow-suggestion-template').clone(true)
|
||||||
.removeAttr('id');
|
.removeAttr('id');
|
||||||
|
|
||||||
item.find('.twister-user-info').attr('data-screen-name', suggestion);
|
item.find('.twister-user-info').attr('data-screen-name', suggestion);
|
||||||
item.find('.twister-user-name').attr('href', $.MAL.userUrl(suggestion));
|
item.find('.twister-user-name').attr('href', $.MAL.userUrl(suggestion));
|
||||||
item.find('.twister-by-user-name').attr('href', $.MAL.userUrl(followedBy));
|
|
||||||
item.find('.twister-user-tag').text('@' + suggestion);
|
item.find('.twister-user-tag').text('@' + suggestion);
|
||||||
|
|
||||||
getAvatar(suggestion, item.find('.twister-user-photo'));
|
getAvatar(suggestion, item.find('.twister-user-photo'));
|
||||||
getFullname(followedBy, item.find('.followed-by').text(followedBy));
|
|
||||||
getStatusTime(suggestion, item.find('.latest-activity .time'));
|
getStatusTime(suggestion, item.find('.latest-activity .time'));
|
||||||
|
|
||||||
item.find('.twister-user-remove').on('click', function() {
|
if (module.hasClass('who-to-follow') || module.hasClass('who-to-follow-modal')) {
|
||||||
item.remove();
|
item.find('.twister-by-user-name').attr('href', $.MAL.userUrl(followedBy));
|
||||||
getRandomFollowSuggestion();
|
getFullname(followedBy, item.find('.followed-by').text(followedBy));
|
||||||
});
|
item.find('.twister-user-remove').on('click', function () {
|
||||||
|
item.remove();
|
||||||
|
getRandomFollowSuggestion();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (module.hasClass('new-users') || module.hasClass('new-users-modal')){
|
||||||
|
item.find('.followers').remove();
|
||||||
|
item.find('.twister-user-remove').remove();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (module.hasClass('modal-wrapper')) {
|
||||||
|
getFullname(suggestion, item.find('.twister-user-full'));
|
||||||
|
getBioToElem(suggestion, item.find('.bio'));
|
||||||
|
item.find('.twister-user-remove').remove();
|
||||||
|
}
|
||||||
|
|
||||||
list.append(item).show();
|
list.append(item).show();
|
||||||
module.find('.refresh-users').show();
|
module.find('.refresh-users').show();
|
||||||
|
@ -146,46 +146,59 @@ function requestBestBlock(cbFunc, cbArg) {
|
|||||||
}, {});
|
}, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function requestNthBlock(n, cbFunc, cbArg) {
|
||||||
|
twisterRpc("getblockhash", [n],
|
||||||
|
function(args, hash) {
|
||||||
|
requestBlock(hash, args.cbFunc, args.cbArg);
|
||||||
|
}, {cbFunc:cbFunc, cbArg:cbArg},
|
||||||
|
function(args, ret) {
|
||||||
|
console.log("getblockhash error");
|
||||||
|
}, {});
|
||||||
|
}
|
||||||
|
|
||||||
function requestBlock(hash, cbFunc, cbArg) {
|
function requestBlock(hash, cbFunc, cbArg) {
|
||||||
twisterRpc("getblock", [hash],
|
twisterRpc("getblock", [hash],
|
||||||
function(args, block) {
|
function(args, block) {
|
||||||
twisterdLastBlockTime = block.time;
|
//twisterdLastBlockTime = block.time;
|
||||||
$(".last-block-time").text( timeGmtToText(twisterdLastBlockTime) );
|
//$(".last-block-time").text( timeGmtToText(twisterdLastBlockTime) );
|
||||||
|
|
||||||
if( args.cbFunc )
|
if( args.cbFunc )
|
||||||
args.cbFunc(args.cbArg);
|
args.cbFunc(block, args.cbArg);
|
||||||
}, {cbFunc:cbFunc, cbArg:cbArg},
|
}, {cbFunc:cbFunc, cbArg:cbArg},
|
||||||
function(args, ret) {
|
function(args, ret) {
|
||||||
console.log("requestBlock error");
|
console.log("requestBlock error");
|
||||||
}, {});
|
}, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function networkUpdate(cbFunc, cbArg) {
|
function networkUpdate(cbFunc, cbArg) {
|
||||||
requestNetInfo(function () {
|
requestNetInfo(function () {
|
||||||
requestBestBlock(function(args) {
|
requestBestBlock(function(block, args) {
|
||||||
var curTime = new Date().getTime() / 1000;
|
|
||||||
if( twisterdConnections ) {
|
twisterdLastBlockTime = block.time;
|
||||||
if( twisterdLastBlockTime > curTime + 3600 ) {
|
$(".last-block-time").text( timeGmtToText(twisterdLastBlockTime) );
|
||||||
$.MAL.setNetworkStatusMsg(polyglot.t("Last block is ahead of your computer time, check your clock."), false);
|
|
||||||
twisterdConnectedAndUptodate = false;
|
var curTime = new Date().getTime() / 1000;
|
||||||
} else if( twisterdLastBlockTime > curTime - (2 * 3600) ) {
|
if (twisterdConnections) {
|
||||||
if( twisterDhtNodes ) {
|
if (twisterdLastBlockTime > curTime + 3600) {
|
||||||
$.MAL.setNetworkStatusMsg(polyglot.t("Block chain is up-to-date, twister is ready to use!"), true);
|
$.MAL.setNetworkStatusMsg(polyglot.t("Last block is ahead of your computer time, check your clock."), false);
|
||||||
twisterdConnectedAndUptodate = true;
|
twisterdConnectedAndUptodate = false;
|
||||||
} else {
|
} else if (twisterdLastBlockTime > curTime - (2 * 3600)) {
|
||||||
$.MAL.setNetworkStatusMsg(polyglot.t("DHT network down."), false);
|
if (twisterDhtNodes) {
|
||||||
twisterdConnectedAndUptodate = true;
|
$.MAL.setNetworkStatusMsg(polyglot.t("Block chain is up-to-date, twister is ready to use!"), true);
|
||||||
}
|
twisterdConnectedAndUptodate = true;
|
||||||
} else {
|
} else {
|
||||||
var daysOld = (curTime - twisterdLastBlockTime) / (3600*24);
|
$.MAL.setNetworkStatusMsg(polyglot.t("DHT network down."), false);
|
||||||
$.MAL.setNetworkStatusMsg(polyglot.t("downloading_block_chain", { days: daysOld.toFixed(2) }), false);
|
twisterdConnectedAndUptodate = true;
|
||||||
// don't alarm user if blockchain is just a little bit behind
|
}
|
||||||
twisterdConnectedAndUptodate = (daysOld < 2);
|
} else {
|
||||||
|
var daysOld = (curTime - twisterdLastBlockTime) / (3600 * 24);
|
||||||
|
$.MAL.setNetworkStatusMsg(polyglot.t("downloading_block_chain", {days: daysOld.toFixed(2)}), false);
|
||||||
|
// don't alarm user if blockchain is just a little bit behind
|
||||||
|
twisterdConnectedAndUptodate = (daysOld < 2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
if (args.cbFunc)
|
||||||
if( args.cbFunc )
|
args.cbFunc(args.cbArg);
|
||||||
args.cbFunc(args.cbArg)
|
|
||||||
}, {cbFunc:cbFunc, cbArg:cbArg} );
|
}, {cbFunc:cbFunc, cbArg:cbArg} );
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
11
options.html
11
options.html
@ -353,6 +353,17 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="module">
|
||||||
|
<p class="label label-h"> New Users </p>
|
||||||
|
<div class="container">
|
||||||
|
<form>
|
||||||
|
<select id="NewUsers">
|
||||||
|
<option value="enable">Enable</option>
|
||||||
|
<option value="disable">Disable</option>
|
||||||
|
</select>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="module">
|
<div class="module">
|
||||||
<p class="label label-h"> Twistday Reminder </p>
|
<p class="label label-h"> Twistday Reminder </p>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
@ -1024,12 +1024,12 @@ textarea.splited-post {
|
|||||||
/***********************************
|
/***********************************
|
||||||
********************* WHO TO FOLLOW
|
********************* WHO TO FOLLOW
|
||||||
***********************************/
|
***********************************/
|
||||||
.who-to-follow
|
.who-to-follow,
|
||||||
{
|
.new-users {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
.who-to-follow h3
|
.who-to-follow h3,
|
||||||
{
|
.new-users h3 {
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
.twister-user
|
.twister-user
|
||||||
@ -2345,19 +2345,23 @@ textarea.splited-post {
|
|||||||
********* WHO TO FOLLOW MODAL ********
|
********* WHO TO FOLLOW MODAL ********
|
||||||
**************************************/
|
**************************************/
|
||||||
|
|
||||||
.who-to-follow-modal .modal-content {
|
.who-to-follow-modal .modal-content,
|
||||||
|
.new-users-modal .modal-content {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal ol {
|
.who-to-follow-modal ol,
|
||||||
|
.new-users-modal ol {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal .open-profile-modal:hover {
|
.who-to-follow-modal .open-profile-modal:hover,
|
||||||
|
.new-users-modal .open-profile-modal span:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal .open-profile-modal span {
|
.who-to-follow-modal .open-profile-modal span,
|
||||||
|
.new-users-modal .open-profile-modal span {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2365,16 +2369,19 @@ textarea.splited-post {
|
|||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal .follow {
|
.who-to-follow-modal .follow,
|
||||||
|
.new-users-modal .follow {
|
||||||
float: right;
|
float: right;
|
||||||
margin: -30px 10px 0 10px;
|
margin: -30px 10px 0 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal .twister-user-info span {
|
.who-to-follow-modal .twister-user-info span,
|
||||||
|
.new-users-modal .twister-user-info span {
|
||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow-modal .bio {
|
.who-to-follow-modal .bio,
|
||||||
|
.new-users-modal .bio {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: rgba( 0, 0, 0, .6 );
|
color: rgba( 0, 0, 0, .6 );
|
||||||
}
|
}
|
||||||
|
@ -2159,27 +2159,32 @@ textarea.splited-post {
|
|||||||
/******** WHO TO FOLLOW ********/
|
/******** WHO TO FOLLOW ********/
|
||||||
|
|
||||||
/* line 411, ../sass/style.sass */
|
/* line 411, ../sass/style.sass */
|
||||||
.who-to-follow.module {
|
.who-to-follow.module,
|
||||||
|
.new-users.module {
|
||||||
width: inherit;
|
width: inherit;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* line 414, ../sass/style.sass */
|
/* line 414, ../sass/style.sass */
|
||||||
.who-to-follow small {
|
.who-to-follow small,
|
||||||
|
.new-users small {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* line 416, ../sass/style.sass */
|
/* line 416, ../sass/style.sass */
|
||||||
.who-to-follow h3 {
|
.who-to-follow h3,
|
||||||
|
.new-users h3 {
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* line 418, ../sass/style.sass */
|
/* line 418, ../sass/style.sass */
|
||||||
.who-to-follow ol {
|
.who-to-follow ol,
|
||||||
|
.new-users ol {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.who-to-follow .twister-user-info {
|
.who-to-follow .twister-user-info,
|
||||||
|
.new-users .twister-user-info {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3130,45 +3135,53 @@ ol.toptrends-list a:hover {
|
|||||||
|
|
||||||
/******* WHO TO FOLLOW MODAL****** */
|
/******* WHO TO FOLLOW MODAL****** */
|
||||||
/* line 943, ../sass/style.sass */
|
/* line 943, ../sass/style.sass */
|
||||||
.modal-wrapper.who-to-follow-modal {
|
.modal-wrapper.who-to-follow-modal,
|
||||||
|
.modal-wrapper.new-users-modal {
|
||||||
width: 520px;
|
width: 520px;
|
||||||
height: 580px;
|
height: 580px;
|
||||||
margin: -290px 0 0 -260px;
|
margin: -290px 0 0 -260px;
|
||||||
}
|
}
|
||||||
/* line 949, ../sass/style.sass */
|
/* line 949, ../sass/style.sass */
|
||||||
.who-to-follow-modal .modal-content {
|
.who-to-follow-modal .modal-content,
|
||||||
|
.new-users-modal .modal-content {
|
||||||
padding: 15px;
|
padding: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* line 955, ../sass/style.sass */
|
/* line 955, ../sass/style.sass */
|
||||||
.who-to-follow-modal ol {
|
.who-to-follow-modal ol,
|
||||||
|
.new-users-modal ol {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
}
|
}
|
||||||
/* line 958, ../sass/style.sass */
|
/* line 958, ../sass/style.sass */
|
||||||
.who-to-follow-modal .open-profile-modal:hover {
|
.who-to-follow-modal .open-profile-modal:hover,
|
||||||
|
.new-users-modal .open-profile-modal:hover {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
}
|
}
|
||||||
/* line 960, ../sass/style.sass */
|
/* line 960, ../sass/style.sass */
|
||||||
.who-to-follow-modal .twister-user {
|
.who-to-follow-modal .twister-user,
|
||||||
position: relative;
|
.new-users-modal .twister-user {
|
||||||
|
position: relative;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
/* line 963, ../sass/style.sass */
|
/* line 963, ../sass/style.sass */
|
||||||
.who-to-follow-modal .twister-user-photo {
|
.who-to-follow-modal .twister-user-photo,
|
||||||
|
.new-users-modal .twister-user-photo {
|
||||||
position: relative;
|
position: relative;
|
||||||
left: 0;
|
left: 0;
|
||||||
float: left;
|
float: left;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
/* line 968, ../sass/style.sass */
|
/* line 968, ../sass/style.sass */
|
||||||
.who-to-follow-modal .twister-user-info {
|
.who-to-follow-modal .twister-user-info,
|
||||||
|
.new-users-modal .twister-user-info {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
padding-left: 70px;
|
padding-left: 70px;
|
||||||
width: auto;
|
width: auto;
|
||||||
}
|
}
|
||||||
/* line 972, ../sass/style.sass */
|
/* line 972, ../sass/style.sass */
|
||||||
.who-to-follow-modal .bio {
|
.who-to-follow-modal .bio,
|
||||||
|
.new-users-modal .bio {
|
||||||
color: rgba(0, 0, 0, 0.6);
|
color: rgba(0, 0, 0, 0.6);
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user