mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-03-05 03:51:26 +01:00
Merge branch 'master' of https://github.com/NodeBB/NodeBB
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -60,3 +60,5 @@ coverage
|
||||
|
||||
build
|
||||
*.log
|
||||
test/files/normalise.jpg.png
|
||||
test/files/normalise-resized.jpg
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "nodebb",
|
||||
"license": "GPL-3.0",
|
||||
"description": "NodeBB Forum",
|
||||
"version": "1.5.0",
|
||||
"version": "1.5.1",
|
||||
"homepage": "http://www.nodebb.org",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -45,6 +45,7 @@
|
||||
"jquery": "^3.1.0",
|
||||
"json-2-csv": "^2.0.22",
|
||||
"less": "^2.0.0",
|
||||
"lodash": "^4.17.4",
|
||||
"lodash.padstart": "^4.6.1",
|
||||
"logrotate-stream": "^0.2.3",
|
||||
"lru-cache": "4.0.2",
|
||||
@@ -93,8 +94,6 @@
|
||||
"templates.js": "0.3.11",
|
||||
"toobusy-js": "^0.5.1",
|
||||
"uglify-js": "^3.0.11",
|
||||
"underscore": "^1.8.3",
|
||||
"underscore.deep": "^0.5.1",
|
||||
"validator": "7.0.0",
|
||||
"winston": "^2.1.0",
|
||||
"xml": "^1.0.1",
|
||||
@@ -138,4 +137,4 @@
|
||||
"url": "https://github.com/barisusakli"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -12,11 +12,15 @@ define('admin/manage/category', [
|
||||
var modified_categories = {};
|
||||
|
||||
Category.init = function () {
|
||||
$('.blockclass, form.category select').each(function () {
|
||||
$('#category-settings select').each(function () {
|
||||
var $this = $(this);
|
||||
$this.val($this.attr('data-value'));
|
||||
});
|
||||
|
||||
$('#category-selector').on('change', function () {
|
||||
ajaxify.go('admin/manage/categories/' + $(this).val());
|
||||
});
|
||||
|
||||
function enableColorPicker(idx, inputEl) {
|
||||
var $inputEl = $(inputEl);
|
||||
var previewEl = $inputEl.parents('[data-cid]').find('.category-preview');
|
||||
@@ -33,7 +37,7 @@ define('admin/manage/category', [
|
||||
}
|
||||
|
||||
|
||||
$('form.category input, form.category select').not($('.privilege-table-container input'))
|
||||
$('#category-settings input, #category-settings select').not($('.privilege-table-container input'))
|
||||
.on('change', function (ev) {
|
||||
modified(ev.target);
|
||||
})
|
||||
@@ -438,6 +442,5 @@ define('admin/manage/category', [
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
return Category;
|
||||
});
|
||||
|
||||
@@ -329,22 +329,23 @@ Categories.buildForSelect = function (uid, callback) {
|
||||
recursive(child, categoriesData, ' ' + level);
|
||||
});
|
||||
}
|
||||
Categories.getCategoriesByPrivilege('cid:0:children', uid, 'read', function (err, categories) {
|
||||
if (err) {
|
||||
return callback(err);
|
||||
}
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
Categories.getCategoriesByPrivilege('cid:0:children', uid, 'read', next);
|
||||
},
|
||||
function (categories, next) {
|
||||
var categoriesData = [];
|
||||
|
||||
var categoriesData = [];
|
||||
categories = categories.filter(function (category) {
|
||||
return category && !category.link && !parseInt(category.parentCid, 10);
|
||||
});
|
||||
|
||||
categories = categories.filter(function (category) {
|
||||
return category && !category.link && !parseInt(category.parentCid, 10);
|
||||
});
|
||||
|
||||
categories.forEach(function (category) {
|
||||
recursive(category, categoriesData, '');
|
||||
});
|
||||
callback(null, categoriesData);
|
||||
});
|
||||
categories.forEach(function (category) {
|
||||
recursive(category, categoriesData, '');
|
||||
});
|
||||
next(null, categoriesData);
|
||||
},
|
||||
], callback);
|
||||
};
|
||||
|
||||
Categories.getIgnorers = function (cid, start, stop, callback) {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var db = require('../database');
|
||||
var posts = require('../posts');
|
||||
|
||||
@@ -8,34 +8,47 @@ var analytics = require('../../analytics');
|
||||
var plugins = require('../../plugins');
|
||||
var translator = require('../../translator');
|
||||
|
||||
var categoriesController = module.exports;
|
||||
|
||||
var categoriesController = {};
|
||||
categoriesController.get = function (req, res, callback) {
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
async.parallel({
|
||||
category: async.apply(categories.getCategories, [req.params.category_id], req.user.uid),
|
||||
privileges: async.apply(privileges.categories.list, req.params.category_id),
|
||||
allCategories: async.apply(categories.buildForSelect, req.uid),
|
||||
}, next);
|
||||
},
|
||||
function (data, next) {
|
||||
var category = data.category[0];
|
||||
|
||||
categoriesController.get = function (req, res, next) {
|
||||
async.parallel({
|
||||
category: async.apply(categories.getCategories, [req.params.category_id], req.user.uid),
|
||||
privileges: async.apply(privileges.categories.list, req.params.category_id),
|
||||
}, function (err, data) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
var category = data.category[0];
|
||||
|
||||
if (!category) {
|
||||
return next();
|
||||
}
|
||||
|
||||
plugins.fireHook('filter:admin.category.get', { req: req, res: res, category: category, privileges: data.privileges }, function (err, data) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
if (!category) {
|
||||
return callback();
|
||||
}
|
||||
|
||||
data.allCategories.forEach(function (category) {
|
||||
if (category) {
|
||||
category.selected = parseInt(category.cid, 10) === parseInt(req.params.category_id, 10);
|
||||
}
|
||||
});
|
||||
|
||||
plugins.fireHook('filter:admin.category.get', {
|
||||
req: req,
|
||||
res: res,
|
||||
category: category,
|
||||
privileges: data.privileges,
|
||||
allCategories: data.allCategories,
|
||||
}, next);
|
||||
},
|
||||
function (data) {
|
||||
data.category.name = translator.escape(String(data.category.name));
|
||||
res.render('admin/manage/category', {
|
||||
category: data.category,
|
||||
privileges: data.privileges,
|
||||
allCategories: data.allCategories,
|
||||
});
|
||||
});
|
||||
});
|
||||
},
|
||||
], callback);
|
||||
};
|
||||
|
||||
categoriesController.getAll = function (req, res) {
|
||||
@@ -44,17 +57,15 @@ categoriesController.getAll = function (req, res) {
|
||||
};
|
||||
|
||||
categoriesController.getAnalytics = function (req, res, next) {
|
||||
async.parallel({
|
||||
name: async.apply(categories.getCategoryField, req.params.category_id, 'name'),
|
||||
analytics: async.apply(analytics.getCategoryAnalytics, req.params.category_id),
|
||||
}, function (err, data) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
res.render('admin/manage/category-analytics', data);
|
||||
});
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
async.parallel({
|
||||
name: async.apply(categories.getCategoryField, req.params.category_id, 'name'),
|
||||
analytics: async.apply(analytics.getCategoryAnalytics, req.params.category_id),
|
||||
}, next);
|
||||
},
|
||||
function (data) {
|
||||
res.render('admin/manage/category-analytics', data);
|
||||
},
|
||||
], next);
|
||||
};
|
||||
|
||||
|
||||
module.exports = categoriesController;
|
||||
|
||||
@@ -5,7 +5,7 @@ var winston = require('winston');
|
||||
var passport = require('passport');
|
||||
var nconf = require('nconf');
|
||||
var validator = require('validator');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var db = require('../database');
|
||||
var meta = require('../meta');
|
||||
|
||||
@@ -6,12 +6,10 @@ var winston = require('winston');
|
||||
var async = require('async');
|
||||
var nconf = require('nconf');
|
||||
var session = require('express-session');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
var semver = require('semver');
|
||||
var db;
|
||||
|
||||
_.mixin(require('underscore.deep'));
|
||||
|
||||
var mongoModule = module.exports;
|
||||
|
||||
mongoModule.questions = [
|
||||
@@ -87,7 +85,7 @@ mongoModule.init = function (callback) {
|
||||
autoReconnect: true,
|
||||
};
|
||||
|
||||
connOptions = _.deepExtend(connOptions, nconf.get('mongo:options') || {});
|
||||
connOptions = _.merge(connOptions, nconf.get('mongo:options') || {});
|
||||
|
||||
mongoClient.connect(connString, connOptions, function (err, _db) {
|
||||
if (err) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
var async = require('async');
|
||||
var winston = require('winston');
|
||||
var nconf = require('nconf');
|
||||
@@ -9,8 +9,6 @@ var session = require('express-session');
|
||||
var redis = require('redis');
|
||||
var redisClient;
|
||||
|
||||
_.mixin(require('underscore.deep'));
|
||||
|
||||
var redisModule = module.exports;
|
||||
|
||||
redisModule.questions = [
|
||||
@@ -78,7 +76,7 @@ redisModule.connect = function (options) {
|
||||
options.auth_pass = nconf.get('redis:password');
|
||||
}
|
||||
|
||||
options = _.deepExtend(options, nconf.get('redis:options') || {});
|
||||
options = _.merge(options, nconf.get('redis:options') || {});
|
||||
|
||||
if (redis_socket_or_host && redis_socket_or_host.indexOf('/') >= 0) {
|
||||
/* If redis.host contains a path name character, use the unix dom sock connection. ie, /tmp/redis.sock */
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('lodash');
|
||||
var S = require('string');
|
||||
|
||||
var db = require('./database');
|
||||
var user = require('./user');
|
||||
var groups = require('./groups');
|
||||
@@ -12,8 +15,6 @@ var posts = require('./posts');
|
||||
var privileges = require('./privileges');
|
||||
var plugins = require('./plugins');
|
||||
var utils = require('../public/src/utils');
|
||||
var _ = require('underscore');
|
||||
var S = require('string');
|
||||
|
||||
var Flags = module.exports;
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
var async = require('async');
|
||||
var winston = require('winston');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var user = require('../user');
|
||||
var utils = require('../utils');
|
||||
@@ -458,7 +458,7 @@ module.exports = function (Groups) {
|
||||
},
|
||||
function (_members, next) {
|
||||
members = _members;
|
||||
uniqueGroups = _.unique(_.flatten(members));
|
||||
uniqueGroups = _.uniq(_.flatten(members));
|
||||
uniqueGroups = Groups.removeEphemeralGroups(uniqueGroups);
|
||||
|
||||
Groups.isMemberOfGroups(uid, uniqueGroups, next);
|
||||
|
||||
@@ -6,7 +6,7 @@ var async = require('async');
|
||||
var fs = require('fs');
|
||||
var mkdirp = require('mkdirp');
|
||||
var rimraf = require('rimraf');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var file = require('../file');
|
||||
var Plugins = require('../plugins');
|
||||
|
||||
@@ -5,7 +5,7 @@ var winston = require('winston');
|
||||
var cron = require('cron').CronJob;
|
||||
var nconf = require('nconf');
|
||||
var S = require('string');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var db = require('./database');
|
||||
var User = require('./user');
|
||||
@@ -247,7 +247,7 @@ Notifications.pushGroups = function (notification, groupNames, callback) {
|
||||
groups.getMembersOfGroups(groupNames, next);
|
||||
},
|
||||
function (groupMembers, next) {
|
||||
var members = _.unique(_.flatten(groupMembers));
|
||||
var members = _.uniq(_.flatten(groupMembers));
|
||||
Notifications.push(notification, members, next);
|
||||
},
|
||||
], callback);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var qs = require('querystring');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var pagination = {};
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ var semver = require('semver');
|
||||
var async = require('async');
|
||||
var winston = require('winston');
|
||||
var nconf = require('nconf');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var meta = require('../meta');
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var db = require('./database');
|
||||
var utils = require('./utils');
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var db = require('../database');
|
||||
var topics = require('../topics');
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var meta = require('../meta');
|
||||
var db = require('../database');
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var db = require('../database');
|
||||
var topics = require('../topics');
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
var async = require('async');
|
||||
var validator = require('validator');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var db = require('../database');
|
||||
var topics = require('../topics');
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var categories = require('../categories');
|
||||
var user = require('../user');
|
||||
@@ -58,7 +58,7 @@ module.exports = function (privileges) {
|
||||
});
|
||||
});
|
||||
|
||||
var members = _.unique(_.flatten(memberSets));
|
||||
var members = _.uniq(_.flatten(memberSets));
|
||||
|
||||
user.getUsersFields(members, ['picture', 'username'], next);
|
||||
},
|
||||
@@ -93,7 +93,7 @@ module.exports = function (privileges) {
|
||||
},
|
||||
function (results, next) {
|
||||
var memberSets = results.memberSets;
|
||||
var uniqueGroups = _.unique(_.flatten(memberSets));
|
||||
var uniqueGroups = _.uniq(_.flatten(memberSets));
|
||||
|
||||
var groupNames = results.groupNames.filter(function (groupName) {
|
||||
return groupName.indexOf(':privileges:') === -1 && uniqueGroups.indexOf(groupName) !== -1;
|
||||
@@ -171,7 +171,7 @@ module.exports = function (privileges) {
|
||||
}, next);
|
||||
},
|
||||
function (results, next) {
|
||||
var privData = _.object(privs, results.privileges);
|
||||
var privData = _.zipObject(privs, results.privileges);
|
||||
var isAdminOrMod = results.isAdministrator || results.isModerator;
|
||||
|
||||
plugins.fireHook('filter:privileges.categories.get', {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var meta = require('../meta');
|
||||
var topics = require('../topics');
|
||||
@@ -29,7 +29,7 @@ module.exports = function (privileges) {
|
||||
}, next);
|
||||
},
|
||||
function (results, next) {
|
||||
var privData = _.object(privs, results.privileges);
|
||||
var privData = _.zipObject(privs, results.privileges);
|
||||
var disabled = parseInt(results.disabled, 10) === 1;
|
||||
var locked = parseInt(topic.locked, 10) === 1;
|
||||
var deleted = parseInt(topic.deleted, 10) === 1;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
var async = require('async');
|
||||
var validator = require('validator');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
var S = require('string');
|
||||
|
||||
var posts = require('../../posts');
|
||||
@@ -69,7 +69,7 @@ module.exports = function (SocketPosts) {
|
||||
], next);
|
||||
},
|
||||
function (results, next) {
|
||||
var uids = _.unique(_.flatten(results).concat(socket.uid.toString()));
|
||||
var uids = _.uniq(_.flatten(results).concat(socket.uid.toString()));
|
||||
uids.forEach(function (uid) {
|
||||
websockets.in('uid_' + uid).emit('event:post_edited', editResult);
|
||||
});
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var db = require('./database');
|
||||
var posts = require('./posts');
|
||||
@@ -135,8 +135,8 @@ Topics.getTopicsByTids = function (tids, uid, callback) {
|
||||
}, next);
|
||||
},
|
||||
function (results, next) {
|
||||
var users = _.object(uids, results.users);
|
||||
var categories = _.object(cids, results.categories);
|
||||
var users = _.zipObject(uids, results.users);
|
||||
var categories = _.zipObject(cids, results.categories);
|
||||
|
||||
for (var i = 0; i < topics.length; i += 1) {
|
||||
if (topics[i]) {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
var validator = require('validator');
|
||||
var S = require('string');
|
||||
var db = require('../database');
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
var validator = require('validator');
|
||||
|
||||
var db = require('../database');
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var categories = require('../categories');
|
||||
var search = require('../search');
|
||||
@@ -51,7 +51,7 @@ module.exports = function (Topics) {
|
||||
}, next);
|
||||
},
|
||||
function (data, next) {
|
||||
next(null, _.unique(_.flatten(data)));
|
||||
next(null, _.uniq(_.flatten(data)));
|
||||
},
|
||||
], callback);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ var async = require('async');
|
||||
|
||||
var db = require('../database');
|
||||
var meta = require('../meta');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
var plugins = require('../plugins');
|
||||
var utils = require('../utils');
|
||||
|
||||
@@ -247,7 +247,7 @@ module.exports = function (Topics) {
|
||||
tag.score = results.counts[index] ? results.counts[index] : 0;
|
||||
});
|
||||
|
||||
var tagData = _.object(uniqueTopicTags, results.tagData);
|
||||
var tagData = _.zipObject(uniqueTopicTags, results.tagData);
|
||||
|
||||
topicTags.forEach(function (tags, index) {
|
||||
if (Array.isArray(tags)) {
|
||||
@@ -444,7 +444,7 @@ module.exports = function (Topics) {
|
||||
}, next);
|
||||
},
|
||||
function (tids, next) {
|
||||
tids = _.shuffle(_.unique(_.flatten(tids))).slice(0, maximumTopics);
|
||||
tids = _.shuffle(_.uniq(_.flatten(tids))).slice(0, maximumTopics);
|
||||
Topics.getTopics(tids, uid, next);
|
||||
},
|
||||
function (topics, next) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var db = require('../database');
|
||||
var categories = require('../categories');
|
||||
@@ -210,7 +210,7 @@ module.exports = function (Topics) {
|
||||
Topics.getTopicsFields(tids, ['cid'], next);
|
||||
},
|
||||
function (topicData, next) {
|
||||
var uniqueCids = _.unique(topicData.map(function (topicData) {
|
||||
var uniqueCids = _.uniq(topicData.map(function (topicData) {
|
||||
return topicData && parseInt(topicData.cid, 10);
|
||||
}));
|
||||
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
'use strict';
|
||||
|
||||
var db = require('../../database');
|
||||
var async = require('async');
|
||||
|
||||
var db = require('../../database');
|
||||
var batch = require('../../batch');
|
||||
|
||||
module.exports = {
|
||||
name: 'Delete accidentally long-lived sessions',
|
||||
timestamp: Date.UTC(2017, 3, 16),
|
||||
method: function (callback) {
|
||||
var configJSON = require.main.require('./config.json');
|
||||
var configJSON = require('../../../config.json');
|
||||
var isRedisSessionStore = configJSON.hasOwnProperty('redis');
|
||||
var progress = this.progress;
|
||||
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
if (isRedisSessionStore) {
|
||||
var rdb = require.main.require('./src/database/redis');
|
||||
var batch = require.main.require('./src/batch');
|
||||
var rdb = require('../../database/redis');
|
||||
var client = rdb.connect();
|
||||
async.waterfall([
|
||||
function (next) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var groups = require('./groups');
|
||||
var plugins = require('./plugins');
|
||||
|
||||
@@ -154,7 +154,7 @@ module.exports = function (User) {
|
||||
};
|
||||
|
||||
User.auth.deleteAllSessions = function (callback) {
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
batch.processSortedSet('users:joindate', function (uids, next) {
|
||||
var sessionKeys = uids.map(function (uid) {
|
||||
return 'uid:' + uid + ':sessions';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
var validator = require('validator');
|
||||
|
||||
var db = require('../database');
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
'use strict';
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('underscore');
|
||||
var _ = require('lodash');
|
||||
|
||||
var meta = require('../meta');
|
||||
var db = require('../database');
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
<div class="row">
|
||||
|
||||
<form role="form" class="category" data-cid="{category.cid}">
|
||||
<select id="category-selector" class="form-control">
|
||||
<!-- BEGIN allCategories -->
|
||||
<option value="{allCategories.value}" <!-- IF allCategories.selected -->selected<!-- ENDIF allCategories.selected -->>{allCategories.text}</option>
|
||||
<!-- END allCategories -->
|
||||
</select>
|
||||
<br/>
|
||||
<ul class="nav nav-pills">
|
||||
<li class="active"><a href="#category-settings" data-toggle="tab">
|
||||
[[admin/manage/categories:settings]]
|
||||
@@ -100,14 +107,14 @@
|
||||
<div class="btn-group btn-group-justified">
|
||||
<div class="btn-group">
|
||||
<button type="button" data-cid="{category.cid}" class="btn btn-default upload-button">
|
||||
<i class="fa fa-upload"></i>
|
||||
<i class="fa fa-upload"></i>
|
||||
[[admin/manage/categories:upload-image]]
|
||||
</button>
|
||||
</div>
|
||||
<!-- IF category.image -->
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-warning delete-image">
|
||||
<i data-name="icon" value="fa-times" class="fa fa-times"></i>
|
||||
<i data-name="icon" value="fa-times" class="fa fa-times"></i>
|
||||
[[admin/manage/categories:delete-image]]
|
||||
</button>
|
||||
</div>
|
||||
@@ -133,7 +140,7 @@
|
||||
<button type="button" class="btn btn-warning" data-action="removeParent" data-parentCid="{category.parent.cid}"><i class="fa fa-times"></i></button>
|
||||
</div>
|
||||
<button type="button" class="btn btn-default btn-block <!-- IF category.parent.name -->hide<!-- ENDIF category.parent.name -->" data-action="setParent">
|
||||
<i class="fa fa-sitemap"></i>
|
||||
<i class="fa fa-sitemap"></i>
|
||||
[[admin/manage/categories:parent-category-none]]
|
||||
</button>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user