ESlint one-var, fix comma-dangle

v1.18.x
Peter Jaszkowiak 8 years ago
parent bc1d70c126
commit 2ba46808a1

@ -3,10 +3,17 @@
"rules": {
"handle-callback-err": [ "error","^(e$|(e|(.*(_e|E)))rr)" ],
"comma-dangle": ["error", {
"arrays": "always-multiline",
"objects": "always-multiline",
"imports": "always-multiline",
"exports": "always-multiline",
"functions": "never"
}],
// "linebreak-style": "off",
"import/no-unresolved": "off",
"import/no-extraneous-dependencies": "off",
"one-var": "off",
// "one-var": "off",
"no-undef": "off",
"max-len": "off",
"no-new": "off",

@ -1,10 +1,11 @@
"use strict";
var fork = require('child_process').fork,
env = process.env,
worker, updateWorker,
incomplete = [],
running = 0;
var fork = require('child_process').fork;
var env = process.env;
var worker;
var updateWorker;
var incomplete = [];
var running = 0;
module.exports = function (grunt) {
@ -14,10 +15,10 @@ module.exports = function (grunt) {
}
function update(action, filepath, target) {
var updateArgs = args.slice(),
fromFile = '',
compiling = '',
time = Date.now();
var updateArgs = args.slice();
var fromFile = '';
var compiling = '';
var time = Date.now();
if (target === 'lessUpdated_Client') {
compiling = 'clientCSS';

@ -1,8 +1,8 @@
'use strict';
var bcrypt = require('bcryptjs'),
async = require('async');
var bcrypt = require('bcryptjs');
var async = require('async');
process.on('message', function (msg) {

@ -1,29 +1,27 @@
'use strict';
var nconf = require('nconf'),
fs = require('fs'),
url = require('url'),
path = require('path'),
fork = require('child_process').fork,
async = require('async'),
logrotate = require('logrotate-stream'),
file = require('./src/file'),
pkg = require('./package.json');
var nconf = require('nconf');
var fs = require('fs');
var url = require('url');
var path = require('path');
var fork = require('child_process').fork;
var async = require('async');
var logrotate = require('logrotate-stream');
var file = require('./src/file');
var pkg = require('./package.json');
nconf.argv().env().file({
file: path.join(__dirname, '/config.json'),
});
var pidFilePath = __dirname + '/pidfile',
output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true }),
silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false,
numProcs,
workers = [],
Loader = {
timesStarted: 0,
};
var pidFilePath = __dirname + '/pidfile';
var output = logrotate({ file: __dirname + '/logs/output.log', size: '1m', keep: 3, compress: true });
var silent = nconf.get('silent') === 'false' ? false : nconf.get('silent') !== false;
var numProcs;
var workers = [];
var Loader = {
timesStarted: 0,
};
Loader.init = function (callback) {
if (silent) {

@ -26,9 +26,9 @@ define('admin/advanced/errors', ['Chart', 'translator'], function (Chart, transl
};
Errors.setupCharts = function () {
var notFoundCanvas = document.getElementById('not-found'),
tooBusyCanvas = document.getElementById('toobusy'),
dailyLabels = utils.getDaysArray();
var notFoundCanvas = document.getElementById('not-found');
var tooBusyCanvas = document.getElementById('toobusy');
var dailyLabels = utils.getDaysArray();
dailyLabels = dailyLabels.slice(-7);

@ -11,8 +11,8 @@ define('admin/advanced/logs', function () {
$('.affix').affix();
$('.logs').find('button[data-action]').on('click', function (event) {
var btnEl = $(this),
action = btnEl.attr('data-action');
var btnEl = $(this);
var action = btnEl.attr('data-action');
switch(action) {
case 'reload':

@ -9,8 +9,8 @@ define('admin/appearance/customise', ['admin/settings'], function (Settings) {
$('#customCSS').text($('#customCSS-holder').val());
$('#customHTML').text($('#customHTML-holder').val());
var customCSS = ace.edit("customCSS"),
customHTML = ace.edit("customHTML");
var customCSS = ace.edit("customCSS");
var customHTML = ace.edit("customHTML");
customCSS.setTheme("ace/theme/twilight");
customCSS.getSession().setMode("ace/mode/css");

@ -21,10 +21,10 @@ define('admin/appearance/skins', ['translator'], function (translator) {
var action = target.attr('data-action');
if (action && action === 'use') {
var parentEl = target.parents('[data-theme]'),
themeType = parentEl.attr('data-type'),
cssSrc = parentEl.attr('data-css'),
themeId = parentEl.attr('data-theme');
var parentEl = target.parents('[data-theme]');
var themeType = parentEl.attr('data-type');
var cssSrc = parentEl.attr('data-css');
var themeId = parentEl.attr('data-theme');
socket.emit('admin.themes.set', {

@ -6,14 +6,14 @@ define('admin/appearance/themes', ['translator'], function (translator) {
Themes.init = function () {
$('#installed_themes').on('click', function (e) {
var target = $(e.target),
action = target.attr('data-action');
var target = $(e.target);
var action = target.attr('data-action');
if (action && action === 'use') {
var parentEl = target.parents('[data-theme]'),
themeType = parentEl.attr('data-type'),
cssSrc = parentEl.attr('data-css'),
themeId = parentEl.attr('data-theme');
var parentEl = target.parents('[data-theme]');
var themeType = parentEl.attr('data-type');
var cssSrc = parentEl.attr('data-css');
var themeId = parentEl.attr('data-theme');
socket.emit('admin.themes.set', {
type: themeType,

@ -4,9 +4,9 @@
define('admin/extend/plugins', ['jqueryui', 'translator'], function (jqueryui, translator) {
var Plugins = {};
Plugins.init = function () {
var pluginsList = $('.plugins'),
numPlugins = pluginsList[0].querySelectorAll('li').length,
pluginID;
var pluginsList = $('.plugins');
var numPlugins = pluginsList[0].querySelectorAll('li').length;
var pluginID;
if (!numPlugins) {
translator.translate('<li><p><i>[[admin/extend/plugins:none-found]]</i></p></li>', function (html) {

@ -5,10 +5,10 @@ define('admin/extend/rewards', ['translator'], function (translator) {
var rewards = {};
var available,
active,
conditions,
conditionals;
var available;
var active;
var conditions;
var conditionals;
rewards.init = function () {
available = ajaxify.data.rewards;
@ -25,8 +25,8 @@ define('admin/extend/rewards', ['translator'], function (translator) {
update($(this));
})
.on('click', '.delete', function () {
var parent = $(this).parents('[data-id]'),
id = parent.attr('data-id');
var parent = $(this).parents('[data-id]');
var id = parent.attr('data-id');
socket.emit('admin.rewards.delete', {id: id}, function (err) {
if (err) {
@ -40,9 +40,9 @@ define('admin/extend/rewards', ['translator'], function (translator) {
return false;
})
.on('click', '.toggle', function () {
var btn = $(this),
disabled = btn.hasClass('btn-success'),
id = $(this).parents('[data-id]').attr('data-id');
var btn = $(this);
var disabled = btn.hasClass('btn-success');
var id = $(this).parents('[data-id]').attr('data-id');
btn.toggleClass('btn-warning').toggleClass('btn-success').translateHtml('[[admin/extend/rewards:' + disabled ? 'disable' : 'enable' + ']]');
// send disable api call
return false;
@ -73,10 +73,10 @@ define('admin/extend/rewards', ['translator'], function (translator) {
}
function selectReward(el) {
var parent = el.parents('[data-rid]'),
div = parent.find('.inputs'),
inputs,
html = '';
var parent = el.parents('[data-rid]');
var div = parent.find('.inputs');
var inputs;
var html = '';
for (var reward in available) {
if (available.hasOwnProperty(reward)) {
@ -113,8 +113,8 @@ define('admin/extend/rewards', ['translator'], function (translator) {
function populateInputs() {
$('[data-rid]').each(function (i) {
var div = $(this).find('.inputs'),
rewards = active[i].rewards;
var div = $(this).find('.inputs');
var rewards = active[i].rewards;
for (var reward in rewards) {
if (rewards.hasOwnProperty(reward)) {
@ -153,9 +153,9 @@ define('admin/extend/rewards', ['translator'], function (translator) {
var activeRewards = [];
$('#active li').each(function () {
var data = {rewards: {}},
main = $(this).find('form.main').serializeArray(),
rewards = $(this).find('form.rewards').serializeArray();
var data = {rewards: {}};
var main = $(this).find('form.main').serializeArray();
var rewards = $(this).find('form.rewards').serializeArray();
main.forEach(function (obj) {
data[obj.name] = obj.value;

@ -80,14 +80,14 @@ define('admin/extend/widgets', ['jqueryui'], function (jqueryui) {
$('#widgets [data-template][data-location]').each(function (i, el) {
el = $(el);
var template = el.attr('data-template'),
location = el.attr('data-location'),
area = el.children('.widget-area'),
widgets = [];
var template = el.attr('data-template');
var location = el.attr('data-location');
var area = el.children('.widget-area');
var widgets = [];
area.find('.widget-panel[data-widget]').each(function () {
var widgetData = {},
data = $(this).find('form').serializeArray();
var widgetData = {};
var data = $(this).find('form').serializeArray();
for (var d in data) {
if (data.hasOwnProperty(d)) {
@ -136,10 +136,10 @@ define('admin/extend/widgets', ['jqueryui'], function (jqueryui) {
}
$('.color-selector').on('click', '.btn', function () {
var btn = $(this),
selector = btn.parents('.color-selector'),
container = selector.parents('[data-container-html]'),
classList = [];
var btn = $(this);
var selector = btn.parents('.color-selector');
var container = selector.parents('[data-container-html]');
var classList = [];
selector.children().each(function () {
classList.push($(this).attr('data-class'));
@ -150,7 +150,7 @@ define('admin/extend/widgets', ['jqueryui'], function (jqueryui) {
.addClass(btn.attr('data-class'));
container.attr('data-container-html', container.attr('data-container-html')
.replace(/class="[a-zA-Z0-9-\s]+"/, 'class="' + container[0].className.replace(' pointer ui-draggable', '') + '"'),
.replace(/class="[a-zA-Z0-9-\s]+"/, 'class="' + container[0].className.replace(' pointer ui-draggable', '') + '"')
);
});
}
@ -191,8 +191,8 @@ define('admin/extend/widgets', ['jqueryui'], function (jqueryui) {
}
widget.find('input, textarea, select').each(function () {
var input = $(this),
value = data[input.attr('name')];
var input = $(this);
var value = data[input.attr('name')];
if (input.attr('type') === 'checkbox') {
input.prop('checked', !!value).trigger('change');
@ -208,14 +208,14 @@ define('admin/extend/widgets', ['jqueryui'], function (jqueryui) {
var areas = data.areas;
for(var i = 0; i < areas.length; ++i) {
var area = areas[i],
widgetArea = $('#widgets .area[data-template="' + area.template + '"][data-location="' + area.location + '"]').find('.widget-area');
var area = areas[i];
var widgetArea = $('#widgets .area[data-template="' + area.template + '"][data-location="' + area.location + '"]').find('.widget-area');
widgetArea.html('');
for (var k = 0; k < area.data.length; ++k) {
var widgetData = area.data[k],
widgetEl = $('.available-widgets [data-widget="' + widgetData.widget + '"]').clone(true).removeClass('hide');
var widgetData = area.data[k];
var widgetEl = $('.available-widgets [data-widget="' + widgetData.widget + '"]').clone(true).removeClass('hide');
widgetArea.append(populateWidget(widgetEl, widgetData.data));
appendToggle(widgetEl);

@ -51,10 +51,10 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator'], function (s
return !isPrerelease.test(version.name); // filter out automated prerelease versions
});
var version = $('#version').html(),
latestVersion = releases[0].name.slice(1),
checkEl = $('.version-check'),
text;
var version = $('#version').html();
var latestVersion = releases[0].name.slice(1);
var checkEl = $('.version-check');
var text;
// Alter box colour accordingly
if (semver.eq(latestVersion, version)) {
@ -159,15 +159,15 @@ define('admin/general/dashboard', ['semver', 'Chart', 'translator'], function (s
}
function setupGraphs() {
var trafficCanvas = document.getElementById('analytics-traffic'),
registeredCanvas = document.getElementById('analytics-registered'),
presenceCanvas = document.getElementById('analytics-presence'),
topicsCanvas = document.getElementById('analytics-topics'),
trafficCtx = trafficCanvas.getContext('2d'),
registeredCtx = registeredCanvas.getContext('2d'),
presenceCtx = presenceCanvas.getContext('2d'),
topicsCtx = topicsCanvas.getContext('2d'),
trafficLabels = utils.getHoursArray();
var trafficCanvas = document.getElementById('analytics-traffic');
var registeredCanvas = document.getElementById('analytics-registered');
var presenceCanvas = document.getElementById('analytics-presence');
var topicsCanvas = document.getElementById('analytics-topics');
var trafficCtx = trafficCanvas.getContext('2d');
var registeredCtx = registeredCanvas.getContext('2d');
var presenceCtx = presenceCanvas.getContext('2d');
var topicsCtx = topicsCanvas.getContext('2d');
var trafficLabels = utils.getHoursArray();
if (isMobile) {
Chart.defaults.global.tooltips.enabled = false;

@ -2,8 +2,8 @@
/* global define, app, ajaxify, socket, templates */
define('admin/general/navigation', ['translator', 'iconSelect', 'jqueryui'], function (translator, iconSelect, jqueryui) {
var navigation = {},
available;
var navigation = {};
var available;
navigation.init = function () {
available = ajaxify.data.available;
@ -61,9 +61,9 @@ define('admin/general/navigation', ['translator', 'iconSelect', 'jqueryui'], fun
}
function drop(ev, ui) {
var id = ui.helper.attr('data-id'),
el = $('#active-navigation [data-id="' + id + '"]'),
data = id === 'custom' ? {iconClass: 'fa-navicon'} : available[id];
var id = ui.helper.attr('data-id');
var el = $('#active-navigation [data-id="' + id + '"]');
var data = id === 'custom' ? {iconClass: 'fa-navicon'} : available[id];
data.enabled = false;
data.index = (parseInt($('#enabled').children().last().attr('data-index'), 10) || 0) + 1;
@ -95,9 +95,9 @@ define('admin/general/navigation', ['translator', 'iconSelect', 'jqueryui'], fun
indices.forEach(function (index) {
var el = $('#enabled').children('[data-index="' + index + '"]');
var form = el.find('form').serializeArray(),
data = {},
properties = {};
var form = el.find('form').serializeArray();
var data = {};
var properties = {};
form.forEach(function (input) {
if (input.name.slice(0, 9) === 'property:' && input.value === 'on') {
@ -135,8 +135,8 @@ define('admin/general/navigation', ['translator', 'iconSelect', 'jqueryui'], fun
}
function toggle() {
var btn = $(this),
disabled = btn.hasClass('btn-success');
var btn = $(this);
var disabled = btn.hasClass('btn-success');
translator.translate(disabled ? '[[admin/general/navigation:btn.disable]]' : '[[admin/general/navigation:btn.enable]]', function (html) {
btn.toggleClass('btn-warning').toggleClass('btn-success').html(html);
btn.parents('li').find('[name="enabled"]').val(disabled ? 'on' : '');

@ -2,7 +2,9 @@
/*global define, socket, app, bootbox, templates, ajaxify, Sortable */
define('admin/manage/categories', ['vendor/jquery/serializeObject/jquery.ba-serializeobject.min', 'translator'], function (serialize, translator) {
var Categories = {}, newCategoryId = -1, sortables;
var Categories = {};
var newCategoryId = -1;
var sortables;
Categories.init = function () {
socket.emit('admin.categories.getAll', function (error, payload) {
@ -17,10 +19,10 @@ define('admin/manage/categories', ['vendor/jquery/serializeObject/jquery.ba-seri
// Enable/Disable toggle events
$('.categories').on('click', 'button[data-action="toggle"]', function () {
var $this = $(this),
cid = $this.attr('data-cid'),
parentEl = $this.parents('li[data-cid="' + cid + '"]'),
disabled = parentEl.hasClass('disabled');
var $this = $(this);
var cid = $this.attr('data-cid');
var parentEl = $this.parents('li[data-cid="' + cid + '"]');
var disabled = parentEl.hasClass('disabled');
var children = parentEl.find('li[data-cid]').map(function () {
return $(this).attr('data-cid');
@ -127,8 +129,11 @@ define('admin/manage/categories', ['vendor/jquery/serializeObject/jquery.ba-seri
//Update needed?
if((e.newIndex != undefined && e.oldIndex != e.newIndex) || isCategoryUpdate) {
var parentCategory = isCategoryUpdate ? sortables[newCategoryId] : sortables[e.from.dataset.cid],
modified = {}, i = 0, list = parentCategory.toArray(), len = list.length;
var parentCategory = isCategoryUpdate ? sortables[newCategoryId] : sortables[e.from.dataset.cid];
var modified = {};
var i = 0;
var list = parentCategory.toArray();
var len = list.length;
for(i; i < len; ++i) {
modified[list[i]] = {

@ -41,7 +41,7 @@ define('admin/manage/category', [
title: '[[admin/manage/categories:alert.updated]]',
message: translator.compile(
'admin/manage/categories:alert.updated-success',
results.join('&#44; '),
results.join('&#44; ')
),
type: 'success',
timeout: 2000,
@ -58,8 +58,8 @@ define('admin/manage/category', [
});
function enableColorPicker(idx, inputEl) {
var $inputEl = $(inputEl),
previewEl = $inputEl.parents('[data-cid]').find('.category-preview');
var $inputEl = $(inputEl);
var previewEl = $inputEl.parents('[data-cid]').find('.category-preview');
colorpicker.enable($inputEl, function (hsb, hex) {
if ($inputEl.attr('data-name') === 'bgColor') {
@ -117,7 +117,7 @@ define('admin/manage/category', [
bootbox.confirm(translator.compile(
'admin/manage/categories:alert.confirm-purge',
$('form.category').find('input[data-name="name"]').val(),
$('form.category').find('input[data-name="name"]').val()
), function (confirm) {
if (!confirm) {
return;
@ -233,13 +233,13 @@ define('admin/manage/category', [
Category.setupPrivilegeTable = function () {
$('.privilege-table-container').on('change', 'input[type="checkbox"]', function () {
var checkboxEl = $(this),
privilege = checkboxEl.parent().attr('data-privilege'),
state = checkboxEl.prop('checked'),
rowEl = checkboxEl.parents('tr'),
member = rowEl.attr('data-group-name') || rowEl.attr('data-uid'),
isPrivate = parseInt(rowEl.attr('data-private') || 0, 10),
isGroup = rowEl.attr('data-group-name') !== undefined;
var checkboxEl = $(this);
var privilege = checkboxEl.parent().attr('data-privilege');
var state = checkboxEl.prop('checked');
var rowEl = checkboxEl.parents('tr');
var member = rowEl.attr('data-group-name') || rowEl.attr('data-uid');
var isPrivate = parseInt(rowEl.attr('data-private') || 0, 10);
var isGroup = rowEl.attr('data-group-name') !== undefined;
if (member) {
if (isGroup && privilege === 'groups:moderate' && !isPrivate && state) {
@ -340,8 +340,8 @@ define('admin/manage/category', [
});
modal.find('li[data-cid]').on('click', function () {
var parentCid = $(this).attr('data-cid'),
payload = {};
var parentCid = $(this).attr('data-cid');
var payload = {};
payload[ajaxify.data.category.cid] = {
parentCid: parentCid,

@ -10,13 +10,13 @@ define('admin/manage/group', [
var Groups = {};
Groups.init = function () {
var groupDetailsSearch = $('#group-details-search'),
groupDetailsSearchResults = $('#group-details-search-results'),
groupIcon = $('#group-icon'),
changeGroupUserTitle = $('#change-group-user-title'),
changeGroupLabelColor = $('#change-group-label-color'),
groupLabelPreview = $('#group-label-preview'),
searchDelay;
var groupDetailsSearch = $('#group-details-search');
var groupDetailsSearchResults = $('#group-details-search-results');
var groupIcon = $('#group-icon');
var changeGroupUserTitle = $('#change-group-user-title');
var changeGroupLabelColor = $('#change-group-label-color');
var groupLabelPreview = $('#group-label-preview');
var searchDelay;
var groupName = ajaxify.data.group.name;
@ -38,12 +38,13 @@ define('admin/manage/group', [
}
searchDelay = setTimeout(function () {
var searchText = groupDetailsSearch.val(),
foundUser;
var searchText = groupDetailsSearch.val();
var foundUser;
socket.emit('admin.user.search', {query: searchText}, function (err, results) {
if (!err && results && results.users.length > 0) {
var numResults = results.users.length, x;
var numResults = results.users.length;
var x;
if (numResults > 20) {
numResults = 20;
}
@ -76,8 +77,8 @@ define('admin/manage/group', [
});
groupDetailsSearchResults.on('click', 'li[data-uid]', function () {
var userLabel = $(this),
uid = parseInt(userLabel.attr('data-uid'), 10);
var userLabel = $(this);
var uid = parseInt(userLabel.attr('data-uid'), 10);
socket.emit('admin.groups.join', {
groupName: groupName,
@ -105,12 +106,12 @@ define('admin/manage/group', [
});
$('[component="groups/members"]').on('click', '[data-action]', function () {
var btnEl = $(this),
userRow = btnEl.parents('[data-uid]'),
ownerFlagEl = userRow.find('.member-name i'),
isOwner = !ownerFlagEl.hasClass('invisible') ? true : false,
uid = userRow.attr('data-uid'),
action = btnEl.attr('data-action');
var btnEl = $(this);
var userRow = btnEl.parents('[data-uid]');
var ownerFlagEl = userRow.find('.member-name i');
var isOwner = !ownerFlagEl.hasClass('invisible') ? true : false;
var uid = userRow.attr('data-uid');
var action = btnEl.attr('data-action');
switch(action) {
case 'toggleOwnership':

@ -7,10 +7,10 @@ define('admin/manage/groups', ['translator'], function (translator) {
var intervalId = 0;
Groups.init = function () {
var createModal = $('#create-modal'),
createGroupName = $('#create-group-name'),
createModalGo = $('#create-modal-go'),
createModalError = $('#create-modal-error');
var createModal = $('#create-modal');
var createGroupName = $('#create-group-name');
var createModalGo = $('#create-modal-go');
var createModalError = $('#create-modal-error');
handleSearch();
@ -29,10 +29,10 @@ define('admin/manage/groups', ['translator'], function (translator) {
createModalGo.on('click', function () {
var submitObj = {
name: createGroupName.val(),
description: $('#create-group-desc').val(),
},
errorText;
name: createGroupName.val(),
description: $('#create-group-desc').val(),
};
var errorText;
socket.emit('admin.groups.create', submitObj, function (err) {
if (err) {
@ -52,9 +52,9 @@ define('admin/manage/groups', ['translator'], function (translator) {
});
$('.groups-list').on('click', 'button[data-action]', function () {
var el = $(this),
action = el.attr('data-action'),
groupName = el.parents('tr[data-groupname]').attr('data-groupname');
var el = $(this);
var action = el.attr('data-action');
var groupName = el.parents('tr[data-groupname]').attr('data-groupname');
switch (action) {
case 'delete':

@ -30,9 +30,9 @@ define('admin/manage/registration', function () {
var method = 'admin.user.deleteInvitation';
var removeRow = function () {
var nextRow = parent.next(),
thisRowinvitedBy = parent.find('.invited-by'),
nextRowInvitedBy = nextRow.find('.invited-by');
var nextRow = parent.next();
var thisRowinvitedBy = parent.find('.invited-by');
var nextRowInvitedBy = nextRow.find('.invited-by');
if (nextRowInvitedBy.html() !== undefined && nextRowInvitedBy.html().length < 2) {
nextRowInvitedBy.html(thisRowinvitedBy.html());
}

@ -6,8 +6,8 @@ define('admin/manage/tags', [
'admin/modules/selectable',
'admin/modules/colorpicker',
], function (infinitescroll, selectable, colorpicker) {
var Tags = {},
timeoutId = 0;
var Tags = {};
var timeoutId = 0;
Tags.init = function () {
selectable.enable('.tag-management', '.tag-row');
@ -85,8 +85,8 @@ define('admin/manage/tags', [
return;
}
var firstTag = $(tagsToModify[0]),
title = tagsToModify.length > 1 ? '[[admin/manage/tags:alerts.editing-multiple]]' : '[[admin/manage/tags:alerts.editing-x, ' + firstTag.find('.tag-item').text() + ']]';
var firstTag = $(tagsToModify[0]);
var title = tagsToModify.length > 1 ? '[[admin/manage/tags:alerts.editing-multiple]]' : '[[admin/manage/tags:alerts.editing-x, ' + firstTag.find('.tag-item').text() + ']]';
var modal = bootbox.dialog({
title: title,
@ -96,9 +96,9 @@ define('admin/manage/tags', [
label: "Save",
className: "btn-primary save",
callback: function () {
var modal = $('.bootbox'),
bgColor = modal.find('[data-name="bgColor"]').val(),
color = modal.find('[data-name="color"]').val();
var modal = $('.bootbox');
var bgColor = modal.find('[data-name="bgColor"]').val();
var color = modal.find('[data-name="color"]').val();
tagsToModify.each(function (idx, tag) {
tag = $(tag);

@ -21,7 +21,7 @@ define('admin/modules/search', ['mousetrap'], function (mousetrap) {
// and wrap the match in a `.search-match` element
.replace(
new RegExp('^[\\s\\S]*?(.{0,25})(' + term + ')(.{0,25})[\\s\\S]*?$', 'gmi'),
'...$1<span class="search-match">$2</span>$3...<br>',
'...$1<span class="search-match">$2</span>$3...<br>'
)
// collapse whitespace
.replace(/(?:\n ?)+/g, '\n')
@ -29,7 +29,7 @@ define('admin/modules/search', ['mousetrap'], function (mousetrap) {
title = title.replace(
new RegExp('(^.*?)(' + term + ')(.*?$)', 'gi'),
'$1<span class="search-match">$2</span>$3',
'$1<span class="search-match">$2</span>$3'
);
return '<li role="presentation" class="result">' +

@ -11,8 +11,8 @@ define('admin/settings', ['uploader'], function (uploader) {
Settings.populateTOC = function () {
$('.settings-header').each(function () {
var header = $(this).text(),
anchor = header.toLowerCase().replace(/ /g, '-').trim();
var header = $(this).text();
var anchor = header.toLowerCase().replace(/ /g, '-').trim();
$(this).prepend('<a name="' + anchor + '"></a>');
$('.section-content ul').append('<li><a href="#' + anchor + '">' + header + '</a></li>');
@ -21,11 +21,14 @@ define('admin/settings', ['uploader'], function (uploader) {
Settings.prepare = function (callback) {
// Populate the fields on the page from the config
var fields = $('#content [data-field]'),
numFields = fields.length,
saveBtn = $('#save'),
revertBtn = $('#revert'),
x, key, inputType, field;
var fields = $('#content [data-field]');
var numFields = fields.length;
var saveBtn = $('#save');
var revertBtn = $('#revert');
var x;
var key;
var inputType;
var field;
// Handle unsaved changes
$(fields).on('change', function () {
@ -148,8 +151,9 @@ define('admin/settings', ['uploader'], function (uploader) {
fields.each(function () {
var field = $(this);
var key = field.attr('data-field'),
value, inputType;
var key = field.attr('data-field');
var value;
var inputType;
if (field.is('input')) {
inputType = field.attr('type');

@ -2,8 +2,8 @@
/* global define, socket, app, ajaxify, ace */
define('admin/settings/email', ['admin/settings'], function (settings) {
var module = {},
emailEditor;
var module = {};
var emailEditor;
module.init = function () {
configureEmailTester();

@ -462,9 +462,9 @@ app.cacheBuster = null;
}
app.handleSearch = function () {
var searchButton = $("#search-button"),
searchFields = $("#search-fields"),
searchInput = $('#search-fields input');
var searchButton = $("#search-button");
var searchFields = $("#search-fields");
var searchInput = $('#search-fields input');
$('#search-form .advanced-search-link').on('mousedown', function () {
ajaxify.go('/search');

@ -91,7 +91,7 @@ define('forum/account/header', [
components.get('account/cover').css('background-image', 'url(' + imageUrlOnServer + '?' + config['cache-buster'] + ')');
});
},
removeCover,
removeCover
);
}

@ -4,7 +4,8 @@
define('forum/account/posts', ['forum/account/header', 'forum/infinitescroll'], function (header, infinitescroll) {
var AccountPosts = {};
var method, template;
var method;
var template;
AccountPosts.init = function () {
header.init();

@ -4,7 +4,8 @@
define('forum/account/topics', ['forum/account/header', 'forum/infinitescroll'], function (header, infinitescroll) {
var AccountTopics = {};
var template, set;
var template;
var set;
AccountTopics.init = function () {
header.init();

@ -211,10 +211,10 @@ define('forum/category', [
template: {category: true},
}, function (html) {
translator.translate(html, function (translatedHTML) {
var topic = $(translatedHTML),
container = $('[component="category"]'),
topics = $('[component="category/topic"]'),
numTopics = topics.length;
var topic = $(translatedHTML);
var container = $('[component="category"]');
var topics = $('[component="category/topic"]');
var numTopics = topics.length;
$('[component="category"]').removeClass('hidden');
$('.category-sidebar').removeClass('hidden');
@ -319,7 +319,8 @@ define('forum/category', [
data.showSelect = data.privileges.editable;
var after, before;
var after;
var before;
var topics = $('[component="category/topic"]');
if (direction > 0 && topics.length) {
@ -337,8 +338,8 @@ define('forum/category', [
if (after) {
html.insertAfter(after);
} else if (before) {
var height = $(document).height(),
scrollTop = $(window).scrollTop();
var height = $(document).height();
var scrollTop = $(window).scrollTop();
html.insertBefore(before);

@ -134,16 +134,16 @@ define('forum/chats', [
Chats.addHotkeys = function () {
mousetrap.bind('ctrl+up', function () {
var activeContact = $('.chats-list .bg-primary'),
prev = activeContact.prev();
var activeContact = $('.chats-list .bg-primary');
var prev = activeContact.prev();
if (prev.length) {
Chats.switchChat(prev.attr('data-roomid'));
}
});
mousetrap.bind('ctrl+down', function () {
var activeContact = $('.chats-list .bg-primary'),
next = activeContact.next();
var activeContact = $('.chats-list .bg-primary');
var next = activeContact.next();
if (next.length) {
Chats.switchChat(next.attr('data-roomid'));

@ -91,7 +91,7 @@ define('forum/chats/messages', ['components', 'sounds', 'translator'], function
messages.scrollToBottom = function (containerEl) {
if (containerEl.length) {
containerEl.scrollTop(
containerEl[0].scrollHeight - containerEl.height(),
containerEl[0].scrollHeight - containerEl.height()
);
}
};

@ -41,7 +41,7 @@ define('forum/groups/details', [
components.get('groups/cover').css('background-image', 'url(' + imageUrlOnServer + ')');
});
},
removeCover,
removeCover
);
}
@ -52,12 +52,12 @@ define('forum/groups/details', [
components.get('groups/activity').find('.content img:not(.not-responsive)').addClass('img-responsive');
detailsPage.on('click', '[data-action]', function () {
var btnEl = $(this),
userRow = btnEl.parents('[data-uid]'),
ownerFlagEl = userRow.find('.member-name > i'),
isOwner = !ownerFlagEl.hasClass('invisible') ? true : false,
uid = userRow.attr('data-uid'),
action = btnEl.attr('data-action');
var btnEl = $(this);
var userRow = btnEl.parents('[data-uid]');
var ownerFlagEl = userRow.find('.member-name > i');
var isOwner = !ownerFlagEl.hasClass('invisible') ? true : false;
var uid = userRow.attr('data-uid');
var action = btnEl.attr('data-action');
switch(action) {
case 'toggleOwnership':
@ -120,15 +120,15 @@ define('forum/groups/details', [
};
Details.prepareSettings = function () {
var settingsFormEl = components.get('groups/settings'),
colorBtn = settingsFormEl.find('[data-action="color-select"]'),
colorValueEl = settingsFormEl.find('[name="labelColor"]'),
iconBtn = settingsFormEl.find('[data-action="icon-select"]'),
previewEl = settingsFormEl.find('.label'),
previewIcon = previewEl.find('i'),
userTitleEl = settingsFormEl.find('[name="userTitle"]'),
userTitleEnabledEl = settingsFormEl.find('[name="userTitleEnabled"]'),
iconValueEl = settingsFormEl.find('[name="icon"]');
var settingsFormEl = components.get('groups/settings');
var colorBtn = settingsFormEl.find('[data-action="color-select"]');
var colorValueEl = settingsFormEl.find('[name="labelColor"]');
var iconBtn = settingsFormEl.find('[data-action="icon-select"]');
var previewEl = settingsFormEl.find('.label');
var previewIcon = previewEl.find('i');
var userTitleEl = settingsFormEl.find('[name="userTitle"]');
var userTitleEnabledEl = settingsFormEl.find('[name="userTitleEnabled"]');
var iconValueEl = settingsFormEl.find('[name="icon"]');
// Add color picker to settings form
colorBtn.ColorPicker({
@ -171,8 +171,8 @@ define('forum/groups/details', [
};
Details.update = function () {
var settingsFormEl = components.get('groups/settings'),
checkboxes = settingsFormEl.find('input[type="checkbox"][name]');
var settingsFormEl = components.get('groups/settings');
var checkboxes = settingsFormEl.find('input[type="checkbox"][name]');
if (settingsFormEl.length) {
require(['vendor/jquery/serializeObject/jquery.ba-serializeobject.min'], function () {

@ -63,9 +63,9 @@ define('forum/groups/list', ['forum/infinitescroll'], function (infinitescroll)
};
Groups.search = function () {
var groupsEl = $('#groups-list'),
queryEl = $('#search-text'),
sortEl = $('#search-sort');
var groupsEl = $('#groups-list');
var queryEl = $('#search-text');
var sortEl = $('#search-sort');
socket.emit('groups.search', {
query: queryEl.val(),

@ -34,7 +34,8 @@ define('forum/infinitescroll', function () {
var offsetTop = container.offset() ? container.offset().top : 0;
var scrollPercent = 100 * (currentScrollTop - offsetTop) / (viewportHeight <= 0 ? wh : viewportHeight);
var top = 20, bottom = 80;
var top = 20;
var bottom = 80;
var direction = currentScrollTop > previousScrollTop ? 1 : -1;
@ -76,8 +77,8 @@ define('forum/infinitescroll', function () {
var removeCount = els.length - count;
if (direction > 0) {
var height = $(document).height(),
scrollTop = $(window).scrollTop();
var height = $(document).height();
var scrollTop = $(window).scrollTop();
els.slice(0, removeCount).remove();

@ -5,9 +5,9 @@ define('forum/login', ['translator'], function (translator) {
var Login = {};
Login.init = function () {
var errorEl = $('#login-error-notify'),
submitEl = $('#login'),
formEl = $('#login-form');
var errorEl = $('#login-error-notify');
var submitEl = $('#login');
var formEl = $('#login-form');
submitEl.on('click', function (e) {
e.preventDefault();

@ -4,16 +4,16 @@
define('forum/register', ['translator'], function (translator) {
var Register = {},
validationError = false,
successIcon = '';
var Register = {};
var validationError = false;
var successIcon = '';
Register.init = function () {
var email = $('#email'),
username = $('#username'),
password = $('#password'),
password_confirm = $('#password-confirm'),
register = $('#register');
var email = $('#email');
var username = $('#username');
var password = $('#password');
var password_confirm = $('#password-confirm');
var register = $('#register');
handleLanguageOverride();
@ -170,8 +170,8 @@ define('forum/register', ['translator'], function (translator) {
}
function validatePassword(password, password_confirm) {
var password_notify = $('#password-notify'),
password_confirm_notify = $('#password-confirm-notify');
var password_notify = $('#password-notify');
var password_confirm_notify = $('#password-confirm-notify');
if (password.length < ajaxify.data.minimumPasswordLength) {
showError(password_notify, '[[user:change_password_error_length]]');
@ -193,8 +193,8 @@ define('forum/register', ['translator'], function (translator) {
}
function validatePasswordConfirm(password, password_confirm) {
var password_notify = $('#password-notify'),
password_confirm_notify = $('#password-confirm-notify');
var password_notify = $('#password-notify');
var password_confirm_notify = $('#password-confirm-notify');
if (!password || password_notify.hasClass('alert-error')) {
return;
@ -230,8 +230,8 @@ define('forum/register', ['translator'], function (translator) {
function handleLanguageOverride() {
if (!app.user.uid && config.defaultLang !== config.userLang) {
var formEl = $('[component="register/local"]'),
langEl = $('<input type="hidden" name="userLang" value="' + config.userLang + '" />');
var formEl = $('[component="register/local"]');
var langEl = $('<input type="hidden" name="userLang" value="' + config.userLang + '" />');
formEl.append(langEl);
}

@ -5,9 +5,9 @@ define('forum/reset', function () {
var ResetPassword = {};
ResetPassword.init = function () {
var inputEl = $('#email'),
errorEl = $('#error'),
successEl = $('#success');
var inputEl = $('#email');
var errorEl = $('#error');
var successEl = $('#success');
$('#reset').on('click', function () {
if (inputEl.val() && inputEl.val().indexOf('@') !== -1) {

@ -128,7 +128,8 @@ define('forum/search', ['search', 'autocomplete'], function (searchModule, autoc
var regex = new RegExp('(' + regexStr + ')', 'gi');
$('.search-result-text p, .search-result-text h4').each(function () {
var result = $(this), nested = [];
var result = $(this);
var nested = [];
result.find('*').each(function () {
$(this).after('<!-- ' + nested.length + ' -->');

@ -14,8 +14,8 @@ define('forum/topic', [
'sort',
'components',
], function (infinitescroll, threadTools, postTools, events, posts, replies, navigator, sort, components) {
var Topic = {},
currentUrl = '';
var Topic = {};
var currentUrl = '';
$(window).on('action:ajaxify.start', function (ev, data) {
if (Topic.replaceURLTimeout) {
@ -112,8 +112,8 @@ define('forum/topic', [
mousetrap.bind('ctrl+f', function (e) {
if (config.topicSearchEnabled) {
// If in topic, open search window and populate, otherwise regular behaviour
var match = ajaxify.currentPage.match(/^topic\/([\d]+)/),
tid;
var match = ajaxify.currentPage.match(/^topic\/([\d]+)/);
var tid;
if (match) {
e.preventDefault();
tid = match[1];

@ -4,9 +4,9 @@
define('forum/topic/flag', [], function () {
var Flag = {},
flagModal,
flagCommit;
var Flag = {};
var flagModal;
var flagCommit;
Flag.showFlagModal = function (pid, username, userslug) {
parseModal({

@ -11,8 +11,8 @@ define('forum/topic/move-post', [], function () {
app.parseAndTranslate('partials/move_post_modal', {}, function (html) {
var moveModal = $(html);
var moveBtn = moveModal.find('#move_post_commit'),
topicId = moveModal.find('#topicId');
var moveBtn = moveModal.find('#move_post_commit');
var topicId = moveModal.find('#topicId');
moveModal.on('hidden.bs.modal', function () {
moveModal.remove();

@ -4,9 +4,9 @@
define('forum/topic/move', function () {
var Move = {},
modal,
selectedEl;
var Move = {};
var modal;
var selectedEl;
Move.init = function (tids, currentCid, onComplete) {
Move.tids = tids;

@ -165,7 +165,8 @@ define('forum/topic/posts', [
return callback();
}
var after, before;
var after;
var before;
if (direction > 0 && repliesSelector.length) {
after = repliesSelector.last();
@ -188,8 +189,8 @@ define('forum/topic/posts', [
html.insertAfter(after);
} else if (before) {
// Save document height and position for future reference (about 5 lines down)
var height = $(document).height(),
scrollTop = $(window).scrollTop();
var height = $(document).height();
var scrollTop = $(window).scrollTop();
html.insertBefore(before);
@ -290,40 +291,42 @@ define('forum/topic/posts', [
default
*/
var images = components.get('post/content').find('img[data-state="unloaded"]'),
visible = images.filter(function () {
var images = components.get('post/content').find('img[data-state="unloaded"]');
var visible = images.filter(function () {
return utils.isElementInViewport(this);
}),
posts = $.unique(visible.map(function () {
});
var posts = $.unique(visible.map(function () {
return $(this).parents('[component="post"]').get(0);
})),
scrollTop = $(window).scrollTop(),
adjusting = false,
adjustQueue = [],
adjustPosition = function () {
adjusting = true;
oldHeight = document.body.clientHeight;
// Display the image
$(this).attr('data-state', 'loaded');
newHeight = document.body.clientHeight;
var imageRect = this.getBoundingClientRect();
if (imageRect.top < threshold) {
scrollTop = scrollTop + (newHeight - oldHeight);
$(window).scrollTop(scrollTop);
}
}));
var scrollTop = $(window).scrollTop();
var adjusting = false;
var adjustQueue = [];
var oldHeight;
var newHeight;
function adjustPosition() {
adjusting = true;
oldHeight = document.body.clientHeight;
// Display the image
$(this).attr('data-state', 'loaded');
newHeight = document.body.clientHeight;
var imageRect = this.getBoundingClientRect();
if (imageRect.top < threshold) {
scrollTop = scrollTop + (newHeight - oldHeight);
$(window).scrollTop(scrollTop);
}
if (adjustQueue.length) {
adjustQueue.pop()();
} else {
adjusting = false;
if (adjustQueue.length) {
adjustQueue.pop()();
} else {
adjusting = false;
Posts.wrapImagesInLinks(posts);
posts.length = 0;
}
},
oldHeight, newHeight;
Posts.wrapImagesInLinks(posts);
posts.length = 0;
}
};
// For each image, reset the source and adjust scrollTop when loaded
visible.attr('data-state', 'loading');
@ -346,9 +349,9 @@ define('forum/topic/posts', [
Posts.wrapImagesInLinks = function (posts) {
posts.find('[component="post/content"] img:not(.emoji)').each(function () {
var $this = $(this),
src = $this.attr('src'),
suffixRegex = /-resized(\.[\w]+)?$/;
var $this = $(this);
var src = $this.attr('src');
var suffixRegex = /-resized(\.[\w]+)?$/;
if (src === 'about:blank') {
return;

@ -64,8 +64,8 @@ define('forum/topic/votes', ['components', 'translator'], function (components,
Votes.toggleVote = function (button, className, method) {
var post = button.parents('[data-pid]'),
currentState = post.find(className).length;
var post = button.parents('[data-pid]');
var currentState = post.find(className).length;
socket.emit(currentState ? 'posts.unvote' : method , {
pid: post.attr('data-pid'),

@ -52,9 +52,9 @@ $('document').ready(function () {
}
function activate(type, el) {
var field = el.val(),
parent = el.parents('.input-row'),
help = parent.children('.help-text');
var field = el.val();
var parent = el.parents('.input-row');
var help = parent.children('.help-text');
function validateUsername(field) {
if (!utils.isUserNameValid(field) || !utils.slugify(field)) {

@ -38,8 +38,8 @@ define('coverPhoto', [
e.stopPropagation();
e.preventDefault();
var files = e.originalEvent.dataTransfer.files,
reader = new FileReader();
var files = e.originalEvent.dataTransfer.files;
var reader = new FileReader();
if (files.length && files[0].type.match('image.*')) {
reader.onload = function (e) {

@ -37,19 +37,19 @@
};
helpers.buildMetaTag = function (tag) {
var name = tag.name ? 'name="' + tag.name + '" ' : '',
property = tag.property ? 'property="' + tag.property + '" ' : '',
content = tag.content ? 'content="' + tag.content.replace(/\n/g, ' ') + '" ' : '';
var name = tag.name ? 'name="' + tag.name + '" ' : '';
var property = tag.property ? 'property="' + tag.property + '" ' : '';
var content = tag.content ? 'content="' + tag.content.replace(/\n/g, ' ') + '" ' : '';
return '<meta ' + name + property + content + '/>\n\t';
};
helpers.buildLinkTag = function (tag) {
var link = tag.link ? 'link="' + tag.link + '" ' : '',
rel = tag.rel ? 'rel="' + tag.rel + '" ' : '',
type = tag.type ? 'type="' + tag.type + '" ' : '',
href = tag.href ? 'href="' + tag.href + '" ' : '',
sizes = tag.sizes ? 'sizes="' + tag.sizes + '" ' : '';
var link = tag.link ? 'link="' + tag.link + '" ' : '';
var rel = tag.rel ? 'rel="' + tag.rel + '" ' : '';
var type = tag.type ? 'type="' + tag.type + '" ' : '';
var href = tag.href ? 'href="' + tag.href + '" ' : '';
var sizes = tag.sizes ? 'sizes="' + tag.sizes + '" ' : '';
return '<link ' + link + rel + type + sizes + href + '/>\n\t';
};
@ -285,5 +285,5 @@
}(
typeof exports === 'object' ? exports :
typeof define === 'function' && define.amd ? {} :
helpers = {},
helpers = {}
));

@ -62,8 +62,8 @@ define('iconSelect', function () {
});
picker.on('show.bs.modal', function () {
var modalEl = $(this),
searchEl = modalEl.find('input');
var modalEl = $(this);
var searchEl = modalEl.find('input');
if (selected) {
modalEl.find('.' + selected).addClass('selected');
@ -72,10 +72,10 @@ define('iconSelect', function () {
}).modal('show');
picker.on('shown.bs.modal', function () {
var modalEl = $(this),
searchEl = modalEl.find('input'),
icons = modalEl.find('.fa-icons i'),
submitEl = modalEl.find('button.btn-primary');
var modalEl = $(this);
var searchEl = modalEl.find('input');
var icons = modalEl.find('.fa-icons i');
var submitEl = modalEl.find('button.btn-primary');
function changeSelection(newSelection) {
modalEl.find('i.selected').removeClass('selected');

@ -8,10 +8,10 @@ define('notifications', ['sounds', 'translator', 'components'], function (sound,
var unreadNotifs = {};
Notifications.prepareDOM = function () {
var notifContainer = components.get('notifications'),
notifTrigger = notifContainer.children('a'),
notifList = components.get('notifications/list'),
notifIcon = components.get('notifications/icon');
var notifContainer = components.get('notifications');
var notifTrigger = notifContainer.children('a');
var notifList = components.get('notifications/list');
var notifIcon = components.get('notifications/icon');
notifTrigger
.on('click', function (e) {

@ -13,10 +13,10 @@ define('settings', function () {
'settings/object',
];
var Settings,
onReady = [],
waitingJobs = 0,
helper;
var Settings;
var onReady = [];
var waitingJobs = 0;
var helper;
/**
Returns the hook of given name that matches the given type or element.
@ -24,7 +24,8 @@ define('settings', function () {
@param name The name of the hook.
*/
function getHook(type, name) {
var hook, plugin;
var hook;
var plugin;
if (typeof type !== 'string') {
type = $(type);
type = type.data('type') || type.attr('type') || type.prop('tagName');
@ -99,7 +100,8 @@ define('settings', function () {
@returns JQuery The created element.
*/
createElementOfType: function (type, tagName, data) {
var element, hook = getHook(type, 'create');
var element;
var hook = getHook(type, 'create');
if (hook != null) {
element = $(hook.call(Settings, type, tagName, data));
} else {
@ -151,11 +153,11 @@ define('settings', function () {
@returns Object The value of the element.
*/
readValue: function (element) {
var empty = !helper.isFalse(element.data('empty')),
trim = !helper.isFalse(element.data('trim')),
split = element.data('split'),
hook = getHook(element, 'get'),
value;
var empty = !helper.isFalse(element.data('empty'));
var trim = !helper.isFalse(element.data('trim'));
var split = element.data('split');
var hook = getHook(element, 'get');
var value;
if (hook != null) {
return hook.call(Settings, element, trim, empty);
}
@ -183,8 +185,8 @@ define('settings', function () {
@param value The value to set.
*/
fillField: function (element, value) {
var hook = getHook(element, 'set'),
trim = element.data('trim');
var hook = getHook(element, 'set');
var trim = element.data('trim');
trim = trim !== 'false' && +trim !== 0;
if (hook != null) {
return hook.call(Settings, element, value, trim);
@ -218,9 +220,9 @@ define('settings', function () {
initFields: function (wrapper) {
$('[data-key]', wrapper).each(function (ignored, field) {
field = $(field);
var hook = getHook(field, 'init'),
keyParts = field.data('key').split('.'),
value = Settings.get();
var hook = getHook(field, 'init');
var keyParts = field.data('key').split('.');
var value = Settings.get();
if (hook != null) {
hook.call(Settings, field);
}
@ -408,17 +410,17 @@ define('settings', function () {
@param notify Whether to send notification when settings got saved.
*/
persist: function (hash, wrapper, callback, notify) {
var notSaved = [],
fields = $('[data-key]', wrapper || 'form').toArray();
var notSaved = [];
var fields = $('[data-key]', wrapper || 'form').toArray();
if (notify == null) {
notify = true;
}
for (var i = 0; i < fields.length; i++) {
var field = $(fields[i]),
value = helper.readValue(field),
parentCfg = Settings.get(),
keyParts = field.data('key').split('.'),
lastKey = keyParts[keyParts.length - 1];
var field = $(fields[i]);
var value = helper.readValue(field);
var parentCfg = Settings.get();
var keyParts = field.data('key').split('.');
var lastKey = keyParts[keyParts.length - 1];
if (keyParts.length > 1) {
for (var j = 0; j < keyParts.length - 1; j++) {
var part = keyParts[j];

@ -1,8 +1,8 @@
define('settings/array', function () {
var Settings = null,
SettingsArray,
helper = null;
var Settings = null;
var SettingsArray;
var helper = null;
/**
Creates a new button that removes itself and the given elements on click.
@ -41,8 +41,8 @@ define('settings/array', function () {
*/
function addArrayChildElement(field, key, attributes, value, separator, insertCb) {
attributes = helper.deepClone(attributes);
var type = attributes['data-type'] || attributes.type || 'text',
element = $(helper.createElementOfType(type, attributes.tagName, attributes));
var type = attributes['data-type'] || attributes.type || 'text';
var element = $(helper.createElementOfType(type, attributes.tagName, attributes));
element.attr('data-parent', '_' + key);
delete attributes['data-type'];
delete attributes['tagName'];
@ -72,12 +72,12 @@ define('settings/array', function () {
@param separator The separator to forward to {@link addArrayChildElement}.
*/
function addAddButton(element, key, attributes, separator) {
var addSpace = $(document.createTextNode(' ')),
newValue = element.data('new') || '',
add = $(helper.createElement('button', {
"class": 'btn btn-sm btn-primary add',
title: 'Expand Array',
}, '+'));
var addSpace = $(document.createTextNode(' '));
var newValue = element.data('new') || '';
var add = $(helper.createElement('button', {
"class": 'btn btn-sm btn-primary add',
title: 'Expand Array',
}, '+'));
add.click(function (event) {
event.preventDefault();
addArrayChildElement(element, key, attributes, newValue, separator.clone(), function (el) {
@ -98,9 +98,9 @@ define('settings/array', function () {
return helper.createElement(tagName || 'div');
},
set: function (element, value) {
var attributes = element.data('attributes'),
key = element.data('key') || element.data('parent'),
separator = element.data('split') || ', ';
var attributes = element.data('attributes');
var key = element.data('key') || element.data('parent');
var separator = element.data('split') || ', ';
separator = (function () {
try {
return $(separator);
@ -123,13 +123,13 @@ define('settings/array', function () {
addAddButton(element, key, attributes, separator);
},
get: function (element, trim, empty) {
var key = element.data('key') || element.data('parent'),
children = $("[data-parent=\"_" + key + "\"]", element),
values = [];
var key = element.data('key') || element.data('parent');
var children = $("[data-parent=\"_" + key + "\"]", element);
var values = [];
children.each(function (i, child) {
child = $(child);
var val = helper.readValue(child),
empty = helper.isTrue(child.data('empty'));
var val = helper.readValue(child);
var empty = helper.isTrue(child.data('empty'));
if (empty || val !== void 0 && (val == null || val.length !== 0)) {
return values.push(val);
}

@ -1,7 +1,7 @@
define('settings/checkbox', function () {
var Settings = null,
SettingsCheckbox;
var Settings = null;
var SettingsCheckbox;
SettingsCheckbox = {
types: ['checkbox'],

@ -1,31 +1,31 @@
define('settings/key', function () {
var Settings = null,
SettingsKey,
helper = null,
lastKey = null,
oldKey = null,
keyMap = Object.freeze({
0: '',
8: 'Backspace',
9: 'Tab',
13: 'Enter',
27: 'Escape',
32: 'Space',
37: 'Left',
38: 'Up',
39: 'Right',
40: 'Down',
45: 'Insert',
46: 'Delete',
187: '=',
189: '-',
190: '.',
191: '/',
219: '[',
220: '\\',
221: ']',
});
var Settings = null;
var SettingsKey;
var helper = null;
var lastKey = null;
var oldKey = null;
var keyMap = Object.freeze({
0: '',
8: 'Backspace',
9: 'Tab',
13: 'Enter',
27: 'Escape',
32: 'Space',
37: 'Left',
38: 'Up',
39: 'Right',
40: 'Down',
45: 'Insert',
46: 'Delete',
187: '=',
189: '-',
190: '.',
191: '/',
219: '[',
220: '\\',
221: ']',
});
function Key() {
this.c = false;
@ -42,9 +42,9 @@ define('settings/key', function () {
@returns Key | null The Key-Object the focused element should be set to.
*/
function getKey(event) {
var anyModChange = event.ctrlKey !== lastKey.c || event.altKey !== lastKey.a || event.shiftKey !== lastKey.s || event.metaKey !== lastKey.m,
modChange = event.ctrlKey + event.altKey + event.shiftKey + event.metaKey - lastKey.c - lastKey.a - lastKey.s - lastKey.m,
key = new Key();
var anyModChange = event.ctrlKey !== lastKey.c || event.altKey !== lastKey.a || event.shiftKey !== lastKey.s || event.metaKey !== lastKey.m;
var modChange = event.ctrlKey + event.altKey + event.shiftKey + event.metaKey - lastKey.c - lastKey.a - lastKey.s - lastKey.m;
var key = new Key();
key.c = event.ctrlKey;
key.a = event.altKey;
key.s = event.shiftKey;
@ -128,9 +128,9 @@ define('settings/key', function () {
if (str instanceof Key) {
return str;
}
var key = new Key(),
sep = /([^CtrlAShifMea#\d]+)(?:#|\d)/.exec(str),
parts = sep != null ? str.split(sep[1]) : [str];
var key = new Key();
var sep = /([^CtrlAShifMea#\d]+)(?:#|\d)/.exec(str);
var parts = sep != null ? str.split(sep[1]) : [str];
for (var i = 0; i < parts.length; i++) {
var part = parts[i];
switch (part) {
@ -199,9 +199,9 @@ define('settings/key', function () {
element.val(getKeyString(key, true, false, ' + '));
},
get: function (element, trim, empty) {
var key = element.data('keyData'),
separator = element.data('split') || element.data('separator') || '+',
short = !helper.isFalse(element.data('short'));
var key = element.data('keyData');
var separator = element.data('split') || element.data('separator') || '+';
var short = !helper.isFalse(element.data('short'));
if (trim) {
if (empty || (key != null && key.char)) {
return getKeyString(key, false, short, separator);

@ -1,8 +1,8 @@
define('settings/object', function () {
var Settings = null,
SettingsObject,
helper = null;
var Settings = null;
var SettingsObject;
var helper = null;
/**
Creates a new child-element of given property with given data and calls given callback with elements to add.
@ -15,9 +15,10 @@ define('settings/object', function () {
@param insertCb The callback to insert the elements.
*/
function addObjectPropertyElement(field, key, attributes, prop, value, separator, insertCb) {
var prepend = attributes['data-prepend'],
append = attributes['data-append'],
type, element;
var prepend = attributes['data-prepend'];
var append = attributes['data-append'];
var type;
var element;
delete attributes['data-prepend'];
delete attributes['data-append'];
attributes = helper.deepClone(attributes);
@ -59,10 +60,12 @@ define('settings/object', function () {
return helper.createElement(tagName || 'div');
},
set: function (element, value) {
var properties = element.data('attributes') || element.data('properties'),
key = element.data('key') || element.data('parent'),
separator = element.data('split') || ', ',
propertyIndex, propertyName, attributes;
var properties = element.data('attributes') || element.data('properties');
var key = element.data('key') || element.data('parent');
var separator = element.data('split') || ', ';
var propertyIndex;
var propertyName;
var attributes;
separator = (function () {
try {
return $(separator);
@ -91,14 +94,14 @@ define('settings/object', function () {
}
},
get: function (element, trim, empty) {
var key = element.data('key') || element.data('parent'),
properties = $('[data-parent="_' + key + '"]', element),
value = {};
var key = element.data('key') || element.data('parent');
var properties = $('[data-parent="_' + key + '"]', element);
var value = {};
properties.each(function (i, property) {
property = $(property);
var val = helper.readValue(property),
prop = property.data('prop'),
empty = helper.isTrue(property.data('empty'));
var val = helper.readValue(property);
var prop = property.data('prop');
var empty = helper.isTrue(property.data('empty'));
if (empty || val !== void 0 && (val == null || val.length !== 0)) {
return value[prop] = val;
}

@ -1,12 +1,12 @@
define('settings/select', function () {
var Settings = null,
SettingsSelect;
var Settings = null;
var SettingsSelect;
function addOptions(element, options) {
for (var i = 0; i < options.length; i++) {
var optionData = options[i],
value = optionData.text || optionData.value;
var optionData = options[i];
var value = optionData.text || optionData.value;
delete optionData.text;
element.append($(Settings.helper.createElement('option', optionData)).text(value));
}

@ -1,7 +1,7 @@
define('settings/textarea', function () {
var Settings = null,
SettingsArea;
var Settings = null;
var SettingsArea;
SettingsArea = {
types: ['textarea'],

@ -13,9 +13,9 @@ define('taskbar', function () {
$(document.body).append(self.taskbar);
self.taskbar.on('click', 'li', function () {
var $btn = $(this),
module = $btn.attr('data-module'),
uuid = $btn.attr('data-uuid');
var $btn = $(this);
var module = $btn.attr('data-module');
var uuid = $btn.attr('data-uuid');
require([module], function (module) {
if (!$btn.hasClass('active')) {

@ -1,7 +1,9 @@
(function (module) {
'use strict';
var utils, fs, XRegExp;
var utils;
var fs;
var XRegExp;
if ('undefined' === typeof window) {
fs = require('fs');
@ -24,8 +26,8 @@
module.exports = utils = {
generateUUID: function () {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0,
v = c === 'x' ? r : (r & 0x3 | 0x8);
var r = Math.random() * 16 | 0;
var v = c === 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
},
@ -143,7 +145,9 @@
// shallow objects merge
merge: function () {
var result = {}, obj, keys;
var result = {};
var obj;
var keys;
for (var i = 0; i < arguments.length; i++) {
obj = arguments[i] || {};
keys = Object.keys(obj);
@ -268,8 +272,8 @@
findBootstrapEnvironment: function () {
//http://stackoverflow.com/questions/14441456/how-to-detect-which-device-view-youre-on-using-twitter-bootstrap-api
var envs = ['xs', 'sm', 'md', 'lg'],
$el = $('<div>');
var envs = ['xs', 'sm', 'md', 'lg'];
var $el = $('<div>');
$el.appendTo($('body'));
@ -292,8 +296,8 @@
},
getHoursArray: function () {
var currentHour = new Date().getHours(),
labels = [];
var currentHour = new Date().getHours();
var labels = [];
for (var i = currentHour, ii = currentHour - 24; i > ii; i--) {
var hour = i < 0 ? 24 + i : i;
@ -304,10 +308,10 @@
},
getDaysArray: function (from) {
var currentDay = new Date(from || Date.now()).getTime(),
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
labels = [],
tmpDate;
var currentDay = new Date(from || Date.now()).getTime();
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var labels = [];
var tmpDate;
for(var x = 29; x >= 0; x--) {
tmpDate = new Date(currentDay - (1000 * 60 * 60 * 24 * x));
@ -336,7 +340,9 @@
// get all the url params in a single key/value hash
params: function (options) {
var a, hash = {}, params;
var a;
var hash = {};
var params;
options = options || {};
options.skipToType = options.skipToType || {};
@ -347,9 +353,9 @@
params = (a ? a.search : window.location.search).substring(1).split("&");
params.forEach(function (param) {
var val = param.split('='),
key = decodeURI(val[0]),
value = options.skipToType[key] ? decodeURI(val[1]) : utils.toType(decodeURI(val[1]));
var val = param.split('=');
var key = decodeURI(val[0]);
var value = options.skipToType[key] ? decodeURI(val[1]) : utils.toType(decodeURI(val[1]));
if (key) {
if (key.substr(-2, 2) === '[]') {
@ -423,8 +429,8 @@
}
return obj[props];
}
var prop = props.slice(0, i),
newProps = props.slice(i + 1);
var prop = props.slice(0, i);
var newProps = props.slice(i + 1);
if(props !== undefined && !(obj[prop] instanceof Object) ) {
obj[prop] = {};

@ -50,8 +50,8 @@ Analytics.pageView = function (payload) {
}
if (payload.path) {
var categoryMatch = payload.path.match(isCategory),
cid = categoryMatch ? parseInt(categoryMatch[1], 10) : null;
var categoryMatch = payload.path.match(isCategory);
var cid = categoryMatch ? parseInt(categoryMatch[1], 10) : null;
if (cid) {
Analytics.increment(['pageviews:byCid:' + cid]);
@ -103,8 +103,8 @@ Analytics.writeData = function (callback) {
};
Analytics.getHourlyStatsForSet = function (set, hour, numHours, callback) {
var terms = {},
hoursArr = [];
var terms = {};
var hoursArr = [];
hour = new Date(hour);
hour.setHours(hour.getHours(), 0, 0, 0);

@ -57,7 +57,7 @@ exports.processSortedSet = function (setKey, process, options, callback) {
});
});
},
callback,
callback
);
};
@ -105,6 +105,6 @@ exports.processArray = function (array, process, options, callback) {
},
function (err) {
callback(err);
},
}
);
};

@ -293,7 +293,10 @@ var privileges = require('./privileges');
* @param parentCid {number} start from 0 to build full tree
*/
Categories.getTree = function (categories, parentCid) {
var tree = [], i = 0, len = categories.length, category;
var tree = [];
var i = 0;
var len = categories.length;
var category;
for (i; i < len; ++i) {
category = categories[i];

@ -120,7 +120,7 @@ profileController.get = function (req, res, callback) {
property: "og:image:url",
content: userData.picture,
noEscape: true,
},
}
);
}
userData.selectedGroup = userData.groups.find(function (group) {

@ -12,8 +12,8 @@ themesController.get = function (req, res, next) {
return next();
}
var themeConfig = require(path.join(themeDir, 'theme.json')),
screenshotPath = path.join(themeDir, themeConfig.screenshot);
var themeConfig = require(path.join(themeDir, 'theme.json'));
var screenshotPath = path.join(themeDir, themeConfig.screenshot);
if (themeConfig.screenshot && file.existsSync(screenshotPath)) {
res.sendFile(screenshotPath);
} else {

@ -55,9 +55,9 @@ uploadsController.uploadFavicon = function (req, res, next) {
};
uploadsController.uploadTouchIcon = function (req, res, next) {
var uploadedFile = req.files.files[0],
allowedTypes = ['image/png'],
sizes = [36, 48, 72, 96, 144, 192];
var uploadedFile = req.files.files[0];
var allowedTypes = ['image/png'];
var sizes = [36, 48, 72, 96, 144, 192];
if (validateUpload(req, res, next, uploadedFile, allowedTypes)) {
file.saveFileToLocal('touchicon-orig.png', 'system', uploadedFile.path, function (err, imageObj) {
@ -105,8 +105,8 @@ uploadsController.uploadSound = function (req, res, next) {
return next(err);
}
var soundsPath = path.join(__dirname, '../../../build/public/sounds'),
filePath = path.join(nconf.get('upload_path'), 'sounds', uploadedFile.name);
var soundsPath = path.join(__dirname, '../../../build/public/sounds');
var filePath = path.join(nconf.get('upload_path'), 'sounds', uploadedFile.name);
file.link(filePath, path.join(soundsPath, path.basename(filePath)));

@ -343,7 +343,8 @@ authenticationController.localLogin = function (req, username, password, next) {
}
var userslug = utils.slugify(username);
var uid, userData = {};
var uid;
var userData = {};
async.waterfall([
function (next) {

@ -259,9 +259,9 @@ module.exports = function (db, module) {
return callback(err);
}
var map = helpers.toMap(result),
returnData = [],
item;
var map = helpers.toMap(result);
var returnData = [];
var item;
for(var i = 0; i < keys.length; ++i) {
item = map[keys[i]];
@ -500,7 +500,7 @@ module.exports = function (db, module) {
});
});
},
callback,
callback
);
};

@ -198,7 +198,8 @@ module.exports = function (redisClient, module) {
function sortedSetLex(method, reverse, key, min, max, start, count, callback) {
callback = callback || start;
var minmin, maxmax;
var minmin;
var maxmax;
if (reverse) {
minmin = '+';
maxmax = '-';

@ -20,30 +20,30 @@ var utils = require('../public/src/utils');
require('./groups/search')(Groups);
require('./groups/cover')(Groups);
var ephemeralGroups = ['guests'],
internals = {
getEphemeralGroup: function (groupName) {
return {
name: groupName,
slug: utils.slugify(groupName),
description: '',
deleted: '0',
hidden: '0',
system: '1',
};
},
removeEphemeralGroups: function (groups) {
var x = groups.length;
while(x--) {
if (ephemeralGroups.indexOf(groups[x]) !== -1) {
groups.splice(x, 1);
}
var ephemeralGroups = ['guests'];
var internals = {
getEphemeralGroup: function (groupName) {
return {
name: groupName,
slug: utils.slugify(groupName),
description: '',
deleted: '0',
hidden: '0',
system: '1',
};
},
removeEphemeralGroups: function (groups) {
var x = groups.length;
while(x--) {
if (ephemeralGroups.indexOf(groups[x]) !== -1) {
groups.splice(x, 1);
}
}
return groups;
},
};
return groups;
},
};
Groups.internals = internals;

@ -1,8 +1,8 @@
'use strict';
var async = require('async'),
db = require('../database'),
plugins = require('../plugins');
var async = require('async');
var db = require('../database');
var plugins = require('../plugins');
module.exports = function (Groups) {

@ -1,8 +1,8 @@
"use strict";
var HotSwap = {},
winston = require('winston'),
stack;
var HotSwap = {};
var winston = require('winston');
var stack;
HotSwap.prepare = function (app) {
stack = app._router.stack;

@ -24,13 +24,13 @@ image.resizeImage = function (data, callback) {
return callback(err);
}
var w = image.bitmap.width,
h = image.bitmap.height,
origRatio = w / h,
desiredRatio = data.width && data.height ? data.width / data.height : origRatio,
x = 0,
y = 0,
crop;
var w = image.bitmap.width;
var h = image.bitmap.height;
var origRatio = w / h;
var desiredRatio = data.width && data.height ? data.width / data.height : origRatio;
var x = 0;
var y = 0;
var crop;
if (origRatio !== desiredRatio) {
if (desiredRatio > origRatio) {

@ -228,84 +228,84 @@ function createAdmin(callback) {
winston.warn('No administrators have been detected, running initial user setup\n');
var questions = [{
name: 'username',
description: 'Administrator username',
required: true,
type: 'string',
}, {
name: 'email',
description: 'Administrator email address',
pattern: /.+@.+/,
required: true,
}],
passwordQuestions = [{
name: 'password',
description: 'Password',
required: true,
hidden: true,
type: 'string',
}, {
name: 'password:confirm',
description: 'Confirm Password',
required: true,
hidden: true,
type: 'string',
}],
success = function (err, results) {
name: 'username',
description: 'Administrator username',
required: true,
type: 'string',
}, {
name: 'email',
description: 'Administrator email address',
pattern: /.+@.+/,
required: true,
}];
var passwordQuestions = [{
name: 'password',
description: 'Password',
required: true,
hidden: true,
type: 'string',
}, {
name: 'password:confirm',
description: 'Confirm Password',
required: true,
hidden: true,
type: 'string',
}];
function success(err, results) {
if (err) {
return callback(err);
}
if (!results) {
return callback(new Error('aborted'));
}
if (results['password:confirm'] !== results.password) {
winston.warn("Passwords did not match, please try again");
return retryPassword(results);
}
if (results.password.length < meta.config.minimumPasswordLength) {
winston.warn("Password too short, please try again");
return retryPassword(results);
}
var adminUid;
async.waterfall([
function (next) {
User.create({username: results.username, password: results.password, email: results.email}, next);
},
function (uid, next) {
adminUid = uid;
Groups.join('administrators', uid, next);
},
function (next) {
Groups.show('administrators', next);
},
function (next) {
Groups.ownership.grant(adminUid, 'administrators', next);
},
], function (err) {
if (err) {
return callback(err);
}
callback(null, password ? results : undefined);
});
}
function retryPassword(originalResults) {
// Ask only the password questions
prompt.get(passwordQuestions, function (err, results) {
if (!results) {
return callback(new Error('aborted'));
}
if (results['password:confirm'] !== results.password) {
winston.warn("Passwords did not match, please try again");
return retryPassword(results);
}
if (results.password.length < meta.config.minimumPasswordLength) {
winston.warn("Password too short, please try again");
return retryPassword(results);
}
var adminUid;
async.waterfall([
function (next) {
User.create({username: results.username, password: results.password, email: results.email}, next);
},
function (uid, next) {
adminUid = uid;
Groups.join('administrators', uid, next);
},
function (next) {
Groups.show('administrators', next);
},
function (next) {
Groups.ownership.grant(adminUid, 'administrators', next);
},
], function (err) {
if (err) {
return callback(err);
}
callback(null, password ? results : undefined);
});
},
retryPassword = function (originalResults) {
// Ask only the password questions
prompt.get(passwordQuestions, function (err, results) {
if (!results) {
return callback(new Error('aborted'));
}
// Update the original data with newly collected password
originalResults.password = results.password;
originalResults['password:confirm'] = results['password:confirm'];
// Update the original data with newly collected password
originalResults.password = results.password;
originalResults['password:confirm'] = results['password:confirm'];
// Send back to success to handle
success(err, originalResults);
});
};
// Send back to success to handle
success(err, originalResults);
});
}
// Add the password questions
questions = questions.concat(passwordQuestions);
@ -389,16 +389,16 @@ function createMenuItems(next) {
if (err || exists) {
return next(err);
}
var navigation = require('./navigation/admin'),
data = require('../install/data/navigation.json');
var navigation = require('./navigation/admin');
var data = require('../install/data/navigation.json');
navigation.save(data, next);
});
}
function createWelcomePost(next) {
var db = require('./database'),
Topics = require('./topics');
var db = require('./database');
var Topics = require('./topics');
async.parallel([
function (next) {
@ -412,8 +412,8 @@ function createWelcomePost(next) {
return next(err);
}
var content = results[0],
numTopics = results[1];
var content = results[0];
var numTopics = results[1];
if (!parseInt(numTopics, 10)) {
process.stdout.write('Creating welcome post!\n');
@ -434,16 +434,16 @@ function enableDefaultPlugins(next) {
process.stdout.write('Enabling default plugins\n');
var defaultEnabled = [
'nodebb-plugin-composer-default',
'nodebb-plugin-markdown',
'nodebb-plugin-mentions',
'nodebb-widget-essentials',
'nodebb-rewards-essentials',
'nodebb-plugin-soundpack-default',
'nodebb-plugin-emoji-extended',
'nodebb-plugin-emoji-one',
],
customDefaults = nconf.get('defaultPlugins');
'nodebb-plugin-composer-default',
'nodebb-plugin-markdown',
'nodebb-plugin-mentions',
'nodebb-widget-essentials',
'nodebb-rewards-essentials',
'nodebb-plugin-soundpack-default',
'nodebb-plugin-emoji-extended',
'nodebb-plugin-emoji-one',
];
var customDefaults = nconf.get('defaultPlugins');
winston.info('[install/defaultPlugins] customDefaults', customDefaults);

@ -4,14 +4,14 @@
* Logger module: ability to dynamically turn on/off logging for http requests & socket.io events
*/
var fs = require('fs'),
path = require('path'),
winston = require('winston'),
util = require('util'),
file = require('./file'),
meta = require('./meta'),
morgan = require('morgan');
var fs = require('fs');
var path = require('path');
var winston = require('winston');
var util = require('util');
var file = require('./file');
var meta = require('./meta');
var morgan = require('morgan');
var opts = {
/*

@ -78,9 +78,9 @@ Blacklist.validate = function (rules, callback) {
var cidr = [];
var invalid = [];
var isCidrSubnet = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$/,
inlineCommentMatch = /#.*$/,
whitelist = ['127.0.0.1', '::1', '::ffff:0:127.0.0.1'];
var isCidrSubnet = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$/;
var inlineCommentMatch = /#.*$/;
var whitelist = ['127.0.0.1', '::1', '::ffff:0:127.0.0.1'];
// Filter out blank lines and lines starting with the hash character (comments)
// Also trim inputs and remove inline comments

@ -90,8 +90,8 @@ module.exports = function (Meta) {
};
function getStyleSource(files, prefix, extension, callback) {
var pluginDirectories = [],
source = '';
var pluginDirectories = [];
var source = '';
files.forEach(function (styleFile) {
if (styleFile.endsWith(extension)) {

@ -38,7 +38,8 @@ function getTranslationTree(callback) {
// generate list of languages and namespaces
function (plugins, next) {
var languages = [], namespaces = [];
var languages = [];
namespaces = [];
// pull languages and namespaces from paths
function extrude(languageDir, paths) {

@ -21,8 +21,9 @@ Templates.compile = function (callback) {
function getBaseTemplates(theme) {
var baseTemplatesPaths = [],
baseThemePath, baseThemeConfig;
var baseTemplatesPaths = [];
var baseThemePath;
var baseThemeConfig;
while (theme) {
baseThemePath = path.join(nconf.get('themes_path'), theme);
@ -78,9 +79,9 @@ function preparePaths(baseTemplatesPaths, callback) {
}, next);
},
}, function (err, data) {
var baseThemes = data.baseThemes,
coreTpls = data.coreTpls,
paths = {};
var baseThemes = data.baseThemes;
var coreTpls = data.coreTpls;
var paths = {};
coreTpls.forEach(function (el, i) {
paths[coreTpls[i].replace(coreTemplatesPath, '')] = coreTpls[i];
@ -104,9 +105,9 @@ function preparePaths(baseTemplatesPaths, callback) {
}
function compile(callback) {
var themeConfig = require(nconf.get('theme_config')),
baseTemplatesPaths = themeConfig.baseTheme ? getBaseTemplates(themeConfig.baseTheme) : [nconf.get('base_templates_path')],
viewsPath = nconf.get('views_dir');
var themeConfig = require(nconf.get('theme_config'));
var baseTemplatesPaths = themeConfig.baseTheme ? getBaseTemplates(themeConfig.baseTheme) : [nconf.get('base_templates_path')];
var viewsPath = nconf.get('views_dir');
preparePaths(baseTemplatesPaths, function (err, paths) {
@ -115,9 +116,9 @@ function compile(callback) {
}
async.each(Object.keys(paths), function (relativePath, next) {
var file = fs.readFileSync(paths[relativePath]).toString(),
matches = null,
regex = /[ \t]*<!-- IMPORT ([\s\S]*?)? -->[ \t]*/;
var file = fs.readFileSync(paths[relativePath]).toString();
var matches = null;
var regex = /[ \t]*<!-- IMPORT ([\s\S]*?)? -->[ \t]*/;
while((matches = file.match(regex)) !== null) {
var partial = "/" + matches[1];

@ -153,8 +153,8 @@ module.exports = function (Meta) {
Meta.themes.setPath = function (themeObj) {
// Theme's templates path
var themePath = nconf.get('base_templates_path'),
fallback = path.join(nconf.get('themes_path'), themeObj.id, 'templates');
var themePath = nconf.get('base_templates_path');
var fallback = path.join(nconf.get('themes_path'), themeObj.id, 'templates');
if (themeObj.templates) {
themePath = path.join(nconf.get('themes_path'), themeObj.id, themeObj.templates);

@ -184,9 +184,9 @@ middleware.applyBlacklist = function (req, res, next) {
};
middleware.processTimeagoLocales = function (req, res, next) {
var fallback = req.path.indexOf('-short') === -1 ? 'jquery.timeago.en.js' : 'jquery.timeago.en-short.js',
localPath = path.join(__dirname, '../../public/vendor/jquery/timeago/locales', req.path),
exists;
var fallback = req.path.indexOf('-short') === -1 ? 'jquery.timeago.en.js' : 'jquery.timeago.en-short.js';
var localPath = path.join(__dirname, '../../public/vendor/jquery/timeago/locales', req.path);
var exists;
try {
exists = fs.accessSync(localPath, fs.F_OK | fs.R_OK);

@ -373,8 +373,8 @@ var utils = require('../public/src/utils');
};
Notifications.prune = function () {
var week = 604800000,
numPruned = 0;
var week = 604800000;
var numPruned = 0;
var cutoffTime = Date.now() - week;
@ -411,13 +411,17 @@ var utils = require('../public/src/utils');
Notifications.merge = function (notifications, callback) {
// When passed a set of notification objects, merge any that can be merged
var mergeIds = [
'notifications:upvoted_your_post_in',
'notifications:user_started_following_you',
'notifications:user_posted_to',
'notifications:user_flagged_post_in',
'new_register',
],
isolated, differentiators, differentiator, modifyIndex, set;
'notifications:upvoted_your_post_in',
'notifications:user_started_following_you',
'notifications:user_posted_to',
'notifications:user_flagged_post_in',
'new_register',
];
var isolated;
var differentiators;
var differentiator;
var modifyIndex;
var set;
notifications = mergeIds.reduce(function (notifications, mergeId) {
isolated = notifications.filter(function (notifObj) {

@ -147,8 +147,8 @@ var middleware;
};
Plugins.getTemplates = function (callback) {
var templates = {},
tplName;
var templates = {};
var tplName;
async.waterfall([
async.apply(db.getSortedSetRange, 'plugins:active', 0, -1),

@ -1,7 +1,7 @@
'use strict';
var winston = require('winston'),
async = require('async');
var winston = require('winston');
var async = require('async');
module.exports = function (Plugins) {
Plugins.deprecatedHooks = {
@ -36,7 +36,7 @@ module.exports = function (Plugins) {
(Plugins.deprecatedHooks[data.hook] ?
'please use `' + Plugins.deprecatedHooks[data.hook] + '` instead.' :
'there is no alternative.'
),
)
);
} else {
// handle hook's startsWith, i.e. action:homepage.get

@ -49,7 +49,9 @@ module.exports = function (Posts) {
Posts.relativeToAbsolute = function (content) {
// Turns relative links in post body to absolute urls
var parsed, current, absolute;
var parsed;
var current;
var absolute;
while ((current = urlRegex.exec(content)) !== null) {
if (current[1]) {
@ -76,8 +78,8 @@ module.exports = function (Posts) {
};
function sanitizeSignature(signature) {
var string = S(signature),
tagsToStrip = [];
var string = S(signature);
var tagsToStrip = [];
if (parseInt(meta.config['signatures:disableLinks'], 10) === 1) {
tagsToStrip.push('a');

@ -158,9 +158,9 @@ module.exports = function (Posts) {
return callback(new Error('[[error:not-enough-reputation-to-downvote]]'));
}
var voteStatus = results.voteStatus,
hook,
current = voteStatus.upvoted ? 'upvote' : 'downvote';
var voteStatus = results.voteStatus;
var hook;
var current = voteStatus.upvoted ? 'upvote' : 'downvote';
if (voteStatus.upvoted && command === 'downvote' || voteStatus.downvoted && command === 'upvote') { // e.g. User *has* upvoted, and clicks downvote
hook = command;

@ -31,7 +31,8 @@ function isUserAllowedToCids(privilege, uid, cids, callback) {
return isGuestAllowedToCids(privilege, cids, callback);
}
var userKeys = [], groupKeys = [];
var userKeys = [];
var groupKeys = [];
for (var i = 0; i < cids.length; ++i) {
userKeys.push('cid:' + cids[i] + ':privileges:' + privilege);
groupKeys.push('cid:' + cids[i] + ':privileges:groups:' + privilege);
@ -63,7 +64,8 @@ function isUserAllowedToPrivileges(privileges, uid, cid, callback) {
return isGuestAllowedToPrivileges(privileges, cid, callback);
}
var userKeys = [], groupKeys = [];
var userKeys = [];
var groupKeys = [];
for (var i = 0; i < privileges.length; ++i) {
userKeys.push('cid:' + cid + ':privileges:' + privileges[i]);
groupKeys.push('cid:' + cid + ':privileges:groups:' + privileges[i]);

@ -73,9 +73,9 @@ module.exports = function (privileges) {
}
var isMembers = checks.user.map(function (isMember, idx) {
return isMember || checks.group[idx];
}),
map = {};
return isMember || checks.group[idx];
});
var map = {};
uniqueCids.forEach(function (cid, index) {
map[cid] = isMembers[index];

@ -1,10 +1,10 @@
'use strict';
var nconf = require('nconf'),
util = require('util'),
winston = require('winston'),
EventEmitter = require('events').EventEmitter;
var nconf = require('nconf');
var util = require('util');
var winston = require('winston');
var EventEmitter = require('events').EventEmitter;
var channelName;

@ -1,17 +1,17 @@
(function (Auth) {
"use strict";
var passport = require('passport'),
passportLocal = require('passport-local').Strategy,
nconf = require('nconf'),
winston = require('winston'),
express = require('express'),
var passport = require('passport');
var passportLocal = require('passport-local').Strategy;
var nconf = require('nconf');
var winston = require('winston');
var express = require('express');
controllers = require('../controllers'),
plugins = require('../plugins'),
hotswap = require('../hotswap'),
var controllers = require('../controllers');
var plugins = require('../plugins');
var hotswap = require('../hotswap');
loginStrategies = [];
var loginStrategies = [];
Auth.initialize = function (app, middleware) {
app.use(passport.initialize());

@ -3,7 +3,11 @@
var meta = require('./meta');
function expandObjBy(obj1, obj2) {
var key, val1, val2, xorValIsArray, changed = false;
var key;
var val1;
var val2;
var xorValIsArray;
var changed = false;
for (key in obj2) {
if (obj2.hasOwnProperty(key)) {
val2 = obj2[key];
@ -23,7 +27,8 @@ function expandObjBy(obj1, obj2) {
}
function trim(obj1, obj2) {
var key, val1;
var key;
var val1;
for (key in obj1) {
if (obj1.hasOwnProperty(key)) {
val1 = obj1[key];
@ -106,8 +111,8 @@ Settings.prototype.sync = function (callback) {
@param callback Gets called when done.
*/
Settings.prototype.persist = function (callback) {
var conf = this.cfg._,
_this = this;
var conf = this.cfg._;
var _this = this;
if (typeof conf === 'object') {
conf = JSON.stringify(conf);
}
@ -126,9 +131,9 @@ Settings.prototype.persist = function (callback) {
@returns Object The setting to be used.
*/
Settings.prototype.get = function (key, def) {
var obj = this.cfg._,
parts = (key || '').split('.'),
part;
var obj = this.cfg._;
var parts = (key || '').split('.');
var part;
for (var i = 0; i < parts.length; i++) {
part = parts[i];
if (part && obj != null) {
@ -183,7 +188,9 @@ Settings.prototype.createDefaultWrapper = function () {
@param val The value to set.
*/
Settings.prototype.set = function (key, val) {
var part, obj, parts;
var part;
var obj;
var parts;
this.cfg.v = this.version;
if (val == null || !key) {
this.cfg._ = val || key;

@ -1,7 +1,7 @@
"use strict";
var navigationAdmin = require('../../navigation/admin'),
SocketNavigation = {};
var navigationAdmin = require('../../navigation/admin');
var SocketNavigation = {};
SocketNavigation.save = function (socket, data, callback) {
navigationAdmin.save(data, callback);

@ -1,7 +1,7 @@
"use strict";
var social = require('../../social'),
SocketSocial = {};
var social = require('../../social');
var SocketSocial = {};
SocketSocial.savePostSharingNetworks = function (socket, data, callback) {
social.setActivePostSharingNetworks(data, callback);

@ -89,7 +89,9 @@ var social = require('./social');
return callback(null, []);
}
var uids, cids, topics;
var uids;
var cids;
var topics;
async.waterfall([
function (next) {

@ -70,7 +70,8 @@ module.exports = function (Topics) {
postData = postData.filter(function (post) {
return post && parseInt(post.deleted, 10) !== 1;
});
var pidsToAdd = [], scores = [];
var pidsToAdd = [];
var scores = [];
postData.forEach(function (post) {
pidsToAdd.push(post.pid);
scores.push(post.timestamp);

@ -263,7 +263,7 @@ module.exports = function (Topics) {
},
function (err) {
callback(err, latestPid);
},
}
);
};

@ -78,8 +78,8 @@ module.exports = function (User) {
});
// Revoke any sessions that have expired, return filtered list
var expiredSids = [],
expired;
var expiredSids = [];
var expired;
sessions = sessions.filter(function (sessionObj, idx) {
expired = !sessionObj || !sessionObj.hasOwnProperty('passport') ||

@ -11,7 +11,9 @@ var topics = require('../topics');
module.exports = function (User) {
User.getLatestBanInfo = function (uid, callback) {
// Simply retrieves the last record of the user's ban, even if they've been unbanned since then.
var timestamp, expiry, reason;
var timestamp;
var expiry;
var reason;
async.waterfall([
async.apply(db.getSortedSetRevRangeWithScores, 'uid:' + uid + ':bans', 0, 0),

@ -126,7 +126,8 @@ module.exports = function (User) {
User.updateCoverPicture = function (data, callback) {
var keepAllVersions = parseInt(meta.config['profile:keepAllUserImages'], 10) === 1;
var url, md5sum;
var url;
var md5sum;
if (!data.imageData && data.position) {
return User.updateCoverPosition(data.uid, data.position, callback);
@ -224,7 +225,8 @@ module.exports = function (User) {
User.uploadCroppedPicture = function (data, callback) {
var keepAllVersions = parseInt(meta.config['profile:keepAllUserImages'], 10) === 1;
var url, md5sum;
var url;
var md5sum;
if (!data.imageData) {
return callback(new Error('[[error:invalid-data]]'));

@ -1,16 +1,16 @@
'use strict';
var async = require('async'),
nconf = require('nconf'),
winston = require('winston'),
var async = require('async');
var nconf = require('nconf');
var winston = require('winston');
user = require('../user'),
utils = require('../../public/src/utils'),
translator = require('../../public/src/modules/translator'),
var user = require('../user');
var utils = require('../../public/src/utils');
var translator = require('../../public/src/modules/translator');
db = require('../database'),
meta = require('../meta'),
emailer = require('../emailer');
var db = require('../database');
var meta = require('../meta');
var emailer = require('../emailer');
(function (UserReset) {
var twoHours = 7200000;

@ -48,8 +48,9 @@ admin.get = function (callback) {
w.content += widgetData.adminTemplate;
});
var templates = [],
list = {}, index = 0;
var templates = [];
var list = {};
var index = 0;
widgetData.areas.forEach(function (area) {
if (typeof list[area.template] === 'undefined') {

@ -1,9 +1,9 @@
'use strict';
/*global require, after, before*/
var async = require('async'),
assert = require('assert'),
db = require('../mocks/databasemock');
var async = require('async');
var assert = require('assert');
var db = require('../mocks/databasemock');
describe('Hash methods', function () {
var testData = {

@ -1,9 +1,9 @@
'use strict';
/*global require, after*/
var async = require('async'),
assert = require('assert'),
db = require('../mocks/databasemock');
var async = require('async');
var assert = require('assert');
var db = require('../mocks/databasemock');
describe('Key methods', function () {

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save