mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-12 07:30:45 +01:00
Merge branch 'master' of github.com:designcreateplay/NodeBB
This commit is contained in:
@@ -99,6 +99,22 @@ define(['forum/accountheader', 'uploader'], function(header, uploader) {
|
||||
return false;
|
||||
});
|
||||
|
||||
function showError(element, msg) {
|
||||
element.html(msg);
|
||||
element.parent()
|
||||
.removeClass('alert-success')
|
||||
.addClass('alert-danger');
|
||||
element.show();
|
||||
validationError = true;
|
||||
}
|
||||
|
||||
function showSuccess(element, msg) {
|
||||
element.html(msg);
|
||||
element.parent()
|
||||
.removeClass('alert-danger')
|
||||
.addClass('alert-success');
|
||||
element.show();
|
||||
}
|
||||
|
||||
(function handlePasswordChange() {
|
||||
var currentPassword = $('#inputCurrentPassword');
|
||||
@@ -108,42 +124,29 @@ define(['forum/accountheader', 'uploader'], function(header, uploader) {
|
||||
var password_confirm = $('#inputNewPasswordAgain');
|
||||
var passwordvalid = false;
|
||||
var passwordsmatch = false;
|
||||
var successIcon = '<i class="fa fa-check"></i>';
|
||||
|
||||
|
||||
function onPasswordChanged() {
|
||||
passwordvalid = utils.isPasswordValid(password.val());
|
||||
if (password.val().length < config.minimumPasswordLength) {
|
||||
password_notify.html('Password too short');
|
||||
password_notify.attr('class', 'alert alert-danger');
|
||||
password_notify.removeClass('hide');
|
||||
showError(password_notify, 'Password too short!');
|
||||
} else if (!passwordvalid) {
|
||||
password_notify.html('Invalid password');
|
||||
password_notify.attr('class', 'alert alert-danger');
|
||||
password_notify.removeClass('hide');
|
||||
showError(password_notify, 'Invalid password!');
|
||||
} else {
|
||||
password_notify.html('OK!');
|
||||
password_notify.attr('class', 'alert alert-success');
|
||||
password_notify.removeClass('hide');
|
||||
showSuccess(password_notify, successIcon);
|
||||
}
|
||||
|
||||
onPasswordConfirmChanged();
|
||||
}
|
||||
|
||||
function onPasswordConfirmChanged() {
|
||||
if (password_notify.hasClass('alert-danger') || !password_confirm.val()) {
|
||||
password_confirm_notify.addClass('hide');
|
||||
return;
|
||||
}
|
||||
if (password.val() !== password_confirm.val()) {
|
||||
password_confirm_notify.html('Passwords must match!');
|
||||
password_confirm_notify.attr('class', 'alert alert-danger');
|
||||
password_confirm_notify.removeClass('hide');
|
||||
passwordsmatch = false;
|
||||
} else {
|
||||
password_confirm_notify.html('OK!');
|
||||
password_confirm_notify.attr('class', 'alert alert-success');
|
||||
password_confirm_notify.removeClass('hide');
|
||||
passwordsmatch = true;
|
||||
if(password.val()) {
|
||||
if (password.val() !== password_confirm.val()) {
|
||||
showError(password_confirm_notify, 'Passwords must match!')
|
||||
passwordsmatch = false;
|
||||
} else {
|
||||
showSuccess(password_confirm_notify, successIcon);
|
||||
passwordsmatch = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -161,8 +164,6 @@ define(['forum/accountheader', 'uploader'], function(header, uploader) {
|
||||
currentPassword.val('');
|
||||
password.val('');
|
||||
password_confirm.val('');
|
||||
password_notify.addClass('hide');
|
||||
password_confirm_notify.addClass('hide');
|
||||
passwordsmatch = false;
|
||||
passwordvalid = false;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
define(function() {
|
||||
var Topic = {},
|
||||
infiniteLoaderActive = false;
|
||||
|
||||
infiniteLoaderActive = false,
|
||||
pagination;
|
||||
|
||||
function showBottomPostBar() {
|
||||
if($('#post-container .post-row').length > 1) {
|
||||
@@ -775,75 +775,76 @@ define(function() {
|
||||
|
||||
|
||||
|
||||
var pagination;
|
||||
|
||||
Topic.postCount = templates.get('postcount');
|
||||
|
||||
function updateHeader() {
|
||||
if (pagination == null) {
|
||||
jQuery('.pagination-block i:first').on('click', function() {
|
||||
app.scrollToTop();
|
||||
});
|
||||
jQuery('.pagination-block i:last').on('click', function() {
|
||||
app.scrollToBottom();
|
||||
});
|
||||
}
|
||||
pagination = pagination || document.getElementById('pagination');
|
||||
|
||||
var windowHeight = jQuery(window).height();
|
||||
var scrollTop = jQuery(window).scrollTop();
|
||||
var scrollBottom = scrollTop + windowHeight;
|
||||
var progressBar = $('.progress-bar');
|
||||
var progressBarContainer = $('.progress-container');
|
||||
|
||||
pagination.parentNode.style.display = 'block';
|
||||
progressBarContainer.css('display', '');
|
||||
|
||||
if (scrollTop < 50 && Topic.postCount > 1) {
|
||||
localStorage.removeItem("topic:" + tid + ":bookmark");
|
||||
pagination.innerHTML = '1 out of ' + Topic.postCount;
|
||||
progressBar.width(0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var count = 0, smallestNonNegative = 0;
|
||||
|
||||
jQuery('.posts > .post-row:not(".deleted")').each(function() {
|
||||
count++;
|
||||
this.postnumber = count;
|
||||
|
||||
|
||||
var el = jQuery(this);
|
||||
var elTop = el.offset().top;
|
||||
var height = Math.floor(el.height());
|
||||
var elBottom = elTop + (height < 300 ? height : 300);
|
||||
|
||||
var inView = ((elBottom >= scrollTop) && (elTop <= scrollBottom) && (elBottom <= scrollBottom) && (elTop >= scrollTop));
|
||||
|
||||
|
||||
if (inView) {
|
||||
if(elTop - scrollTop > smallestNonNegative) {
|
||||
localStorage.setItem("topic:" + tid + ":bookmark", el.attr('data-pid'));
|
||||
smallestNonNegative = Number.MAX_VALUE;
|
||||
}
|
||||
|
||||
pagination.innerHTML = (this.postnumber-1) + ' out of ' + Topic.postCount;
|
||||
progressBar.width(((this.postnumber-1) / Topic.postCount * 100) + '%');
|
||||
}
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
if (scrollTop + windowHeight == jQuery(document).height()) {
|
||||
pagination.innerHTML = Topic.postCount + ' out of ' + Topic.postCount;
|
||||
progressBar.width('100%');
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
|
||||
window.onscroll = updateHeader;
|
||||
window.onload = updateHeader;
|
||||
};
|
||||
|
||||
function updateHeader() {
|
||||
if (pagination == null) {
|
||||
jQuery('.pagination-block i:first').on('click', function() {
|
||||
app.scrollToTop();
|
||||
});
|
||||
jQuery('.pagination-block i:last').on('click', function() {
|
||||
app.scrollToBottom();
|
||||
});
|
||||
}
|
||||
pagination = pagination || document.getElementById('pagination');
|
||||
|
||||
var windowHeight = jQuery(window).height();
|
||||
var scrollTop = jQuery(window).scrollTop();
|
||||
var scrollBottom = scrollTop + windowHeight;
|
||||
var progressBar = $('.progress-bar');
|
||||
var progressBarContainer = $('.progress-container');
|
||||
var tid = templates.get('topic_id');
|
||||
|
||||
pagination.parentNode.style.display = 'block';
|
||||
progressBarContainer.css('display', '');
|
||||
|
||||
if (scrollTop < 50 && Topic.postCount > 1) {
|
||||
localStorage.removeItem("topic:" + tid + ":bookmark");
|
||||
pagination.innerHTML = '1 out of ' + Topic.postCount;
|
||||
progressBar.width(0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var count = 0, smallestNonNegative = 0;
|
||||
|
||||
jQuery('.posts > .post-row:not(".deleted")').each(function() {
|
||||
count++;
|
||||
this.postnumber = count;
|
||||
|
||||
|
||||
var el = jQuery(this);
|
||||
var elTop = el.offset().top;
|
||||
var height = Math.floor(el.height());
|
||||
var elBottom = elTop + (height < 300 ? height : 300);
|
||||
|
||||
var inView = ((elBottom >= scrollTop) && (elTop <= scrollBottom) && (elBottom <= scrollBottom) && (elTop >= scrollTop));
|
||||
|
||||
|
||||
if (inView) {
|
||||
if(elTop - scrollTop > smallestNonNegative) {
|
||||
localStorage.setItem("topic:" + tid + ":bookmark", el.attr('data-pid'));
|
||||
smallestNonNegative = Number.MAX_VALUE;
|
||||
}
|
||||
|
||||
pagination.innerHTML = (this.postnumber-1) + ' out of ' + Topic.postCount;
|
||||
progressBar.width(((this.postnumber-1) / Topic.postCount * 100) + '%');
|
||||
}
|
||||
});
|
||||
|
||||
setTimeout(function() {
|
||||
if (scrollTop + windowHeight == jQuery(document).height()) {
|
||||
pagination.innerHTML = Topic.postCount + ' out of ' + Topic.postCount;
|
||||
progressBar.width('100%');
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
|
||||
Topic.scrollToPost = function(pid) {
|
||||
if (!pid) {
|
||||
return;
|
||||
@@ -944,8 +945,13 @@ define(function() {
|
||||
}
|
||||
|
||||
function updatePostCount() {
|
||||
Topic.postCount = $('#post-container li[data-pid]:not(.deleted)').length;
|
||||
$('#topic-post-count').html(Topic.postCount);
|
||||
socket.emit('api:topics.postcount', templates.get('topic_id'), function(err, postcount) {
|
||||
if(!err) {
|
||||
Topic.postCount = postcount;
|
||||
$('#topic-post-count').html(Topic.postCount);
|
||||
updateHeader();
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function loadMorePosts(tid, callback) {
|
||||
|
||||
@@ -115,17 +115,21 @@
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="inputNewPassword">Password</label>
|
||||
<div class="controls">
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="password" id="inputNewPassword" placeholder="New Password" value="">
|
||||
<div id="password-notify" class="alert alert-danger hide"></div>
|
||||
<span class="input-group-addon">
|
||||
<span id="password-notify"><i class="fa fa-circle-o"></i></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="inputNewPasswordAgain">Confirm Password</label>
|
||||
<div class="controls">
|
||||
<div class="input-group">
|
||||
<input class="form-control" type="password" id="inputNewPasswordAgain" placeholder="Confirm Password" value="">
|
||||
<div id="password-confirm-notify" class="alert alert-danger hide"></div>
|
||||
<span class="input-group-addon">
|
||||
<span id="password-confirm-notify"><i class="fa fa-circle-o"></i></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
|
||||
@@ -7,7 +7,7 @@ var bcrypt = require('bcrypt'),
|
||||
userSearch = require('reds').createSearch('nodebbusersearch'),
|
||||
check = require('validator').check,
|
||||
sanitize = require('validator').sanitize,
|
||||
|
||||
|
||||
utils = require('./../public/src/utils'),
|
||||
RDB = require('./redis'),
|
||||
meta = require('./meta'),
|
||||
|
||||
@@ -340,8 +340,8 @@ module.exports.init = function(io) {
|
||||
if (uid) {
|
||||
user.setUserFields(uid, {
|
||||
showemail: data.showemail
|
||||
}, function(err) {
|
||||
callback(err ? err.message : null);
|
||||
}, function(err, result) {
|
||||
callback(err);
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -403,6 +403,10 @@ module.exports.init = function(io) {
|
||||
|
||||
});
|
||||
|
||||
socket.on('api:topics.postcount', function(tid, callback) {
|
||||
topics.getTopicField(tid, 'postcount', callback);
|
||||
});
|
||||
|
||||
socket.on('api:topics.markAllRead', function(data, callback) {
|
||||
topics.markAllRead(uid, function(err, success) {
|
||||
if (!err && success) {
|
||||
|
||||
Reference in New Issue
Block a user