nodebb-plugin-l24u-lk
Version:
This is lk for l24u.ru
114 lines (105 loc) • 3.61 kB
JavaScript
(function(Filter) {
'use strict';
var async = require('async'),
database = require('./database'),
controller = require('./controller'),
constants = require('./constants');
/**
* Hook to render user profile.
* 'userData' will be used as payload in hook handler.
* @param params {object} Payload :{userData: userData, uid: callerUID}
* @param callback {function}
*/
Filter.account = function(params, callback) {
database.getPoints(params.userData.uid, function(error, points) {
if (error) {
return callback(error);
}
params.userData.points = points || 0;
callback(null, params);
});
};
Filter.menuAdmin = function(header, callback) {
header.plugins.push({
route: '/plugins/points',
icon: 'fa-gamepad',
name: 'Настройки ЛК'
});
callback(null, header);
};
Filter.navigation = function(items, callback) {
items.push({
route: "/points",
title: "Points",
enabled: true,
iconClass: "fa-gamepad",
textClass: "visible-xs-inline",
text: "Points"
});
callback(null, items);
};
/**
* Hook to render single posted post
* @param postData {object} Fields: {pid, uid, tid, content, timestamp, reputation, votes, editor, edited, deleted, cid}
* @param callback {function}
*/
Filter.postGet = function(postData, callback) {
database.getPoints(postData.uid, function(error, points) {
if (error) {
return callback(error);
}
postData.points = points || 0;
callback(null, postData);
});
};
/**
* Hook to render topic thread
* @param payload {object} Fields: {posts: posts, uid: uid}
* @param callback {function}
*/
Filter.postGetPosts = function(payload, callback) {
async.map(payload.posts, function(post, next) {
database.getPoints(post.uid, function(error, points) {
if (error) {
return next(error);
}
post.points = points || 0;
next(null, post);
});
}, function(error, results) {
if (error) {
return callback(error);
}
payload.posts = results;
callback(null, payload);
});
};
/**
* Hook to inject points settings and values
* @param topicData {object} Fields: {topic: topicData, uid: uid}
* @param callback {function}
*/
Filter.topicGet = function(topicData, callback) {
controller.injectSettings(topicData.topic, function(error, topicWithSettings) {
if (error) {
return callback(error);
}
topicData.topic = topicWithSettings;
callback(null, topicData);
});
};
/**
* Hook to inject points settings and values
* @param topicData {object} Fields: {topic: topicData, uid: uid}
* @param callback {function}
*/
Filter.profileLinks = function(links, callback) {
callback(null, [{
id: 1,
public: true,
route: '../../lk',
icon: 'fa fa-gamepad',
name: 'Личный кабинет игрока'
}]);
};
})(module.exports);