diff --git a/package.json b/package.json index cf6202b..fc07b09 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nodebb-plugin-ns-points", - "version": "6.0.1", + "version": "6.1.1", "description": "Additional metrics for User Profiles. It's like experience in video games. Plugin is good for gamification of your board.", "main": "./plugin/index.js", "scripts": { diff --git a/plugin.json b/plugin.json index 80b2b33..33e1940 100644 --- a/plugin.json +++ b/plugin.json @@ -54,19 +54,15 @@ "method": "hooks.statics.userDelete" } ], - "less": [ - "style/client.less" - ], - "acpScripts": [ - "public/js/acp.js" - ], - "scripts": [ - "public/js/overview.js" - ], + "scss": ["style/client.scss"], + "modules": { + "../admin/plugins/points.js": "./public/js/acp.js", + "../client/points/overview.js": "./public/js/overview.js" + }, "staticDirs": { "css": "./public/css", "templates": "./public/templates", "js": "./public/js" }, "templates": "./public/templates" -} \ No newline at end of file +} diff --git a/plugin/files.js b/plugin/files.js index 4889062..ab25e94 100644 --- a/plugin/files.js +++ b/plugin/files.js @@ -1,26 +1,26 @@ (function (Files) { - 'use strict'; + "use strict"; - var fs = require('fs'), - path = require('path'); + var fs = require("fs"), + path = require("path"); - var userTemplate = null; + var userTemplate = null; - Files.init = function (done) { - fs.readFile( - path.resolve(__dirname, '../public', './templates/client/points/user.tpl'), - 'utf8', - function (error, template) { - if (error) { - return done(error); - } - userTemplate = template; - done(null); - }); - }; - - Files.getUserTemplate = function (done) { - done(null, userTemplate); - }; + Files.init = function (done) { + fs.readFile( + path.resolve(__dirname, "../public", "./templates/points/user.tpl"), + "utf8", + function (error, template) { + if (error) { + return done(error); + } + userTemplate = template; + done(null); + } + ); + }; + Files.getUserTemplate = function (done) { + done(null, userTemplate); + }; })(module.exports); diff --git a/plugin/index.js b/plugin/index.js index 177e38a..9d87d8f 100644 --- a/plugin/index.js +++ b/plugin/index.js @@ -1,56 +1,57 @@ (function (Plugin) { - 'use strict'; - - const async = require('async'); - - const actions = require('./actions'), - controller = require('./controller'), - files = require('./files'), - filters = require('./filters'), - settings = require('./settings'), - sockets = require('./sockets'); - - //NodeBB list of Hooks: https://github.com/NodeBB/NodeBB/wiki/Hooks - Plugin.hooks = { - actions: actions, - filters: filters, - statics: { - load: function (params, callback) { - var router = params.router, - middleware = params.middleware, - controllers = params.controllers, - pluginUri = '/admin/plugins/points', - - renderAdmin = function (req, res, next) { - res.render(pluginUri.substring(1), {}); - }, - - renderOverviewSection = function (req, res, next) { - controller.getTopUsers(function (error, payload) { - if (error) { - return res.status(500).json(error); - } - res.render('client/points/overview', payload); - }); - }; - - router.get(pluginUri, middleware.admin.buildHeader, renderAdmin); - router.get('/api' + pluginUri, renderAdmin); - - // Overview Page - router.get('/points', middleware.buildHeader, renderOverviewSection); - router.get('/api/points', renderOverviewSection); - - async.parallel({ - settings: async.apply(settings.init), - sockets : async.apply(sockets.init), - files : async.apply(files.init) - }, callback); - }, - - userDelete: function ({uid}, callback) { - controller.deleteUser(uid, callback); - } - } - }; + "use strict"; + + const async = require("async"); + + const actions = require("./actions"), + controller = require("./controller"), + files = require("./files"), + filters = require("./filters"), + settings = require("./settings"), + sockets = require("./sockets"); + + //NodeBB list of Hooks: https://github.com/NodeBB/NodeBB/wiki/Hooks + Plugin.hooks = { + actions: actions, + filters: filters, + statics: { + load: function (params, callback) { + var router = params.router, + middleware = params.middleware, + controllers = params.controllers, + pluginUri = "/admin/plugins/points", + renderAdmin = function (req, res, next) { + res.render(pluginUri.substring(1), {}); + }, + renderOverviewSection = async function (req, res, next) { + controller.getTopUsers(function (error, payload) { + if (error) { + return res.status(500).json(error); + } + res.render("points/overview", payload); + }); + }; + + router.get(pluginUri, middleware.admin.buildHeader, renderAdmin); + router.get("/api" + pluginUri, renderAdmin); + + // Overview Page + router.get("/points", middleware.buildHeader, renderOverviewSection); + router.get("/api/points", renderOverviewSection); + + async.parallel( + { + settings: async.apply(settings.init), + sockets: async.apply(sockets.init), + files: async.apply(files.init), + }, + callback + ); + }, + + userDelete: function ({ uid }, callback) { + controller.deleteUser(uid, callback); + }, + }, + }; })(module.exports); diff --git a/public/js/overview.js b/public/js/overview.js index 69e065f..3bc2292 100644 --- a/public/js/overview.js +++ b/public/js/overview.js @@ -1,34 +1,38 @@ -'use strict'; +"use strict"; /* globals define, app, ajaxify, bootbox, socket, templates, utils */ -define('forum/client/points/overview', [], function () { - - var Overview = {}, - columns = 4, - className = 'col-lg-3 col-md-3 col-xs-12 points-fade-in', - delay = 0.1; - - Overview.init = function () { - var container = document.getElementsByClassName('points-users')[0]; - var i, len = ajaxify.data.users.length, payload, htmlRow, htmlUser; - - for (i = 0; i < len; ++i) { - payload = ajaxify.data.users[i]; - - if (i % columns === 0) { - htmlRow = document.createElement('div'); - htmlRow.className = 'row'; - container.appendChild(htmlRow); - } - - htmlUser = document.createElement('div'); - htmlUser.className = className; - htmlUser.style['animation-delay'] = delay * i + 's'; - htmlUser.innerHTML = payload; - htmlRow.appendChild(htmlUser); - } - }; - - return Overview; +define("forum/points/overview", [], function () { + console.log(ajaxify.data, "data"); + var module = {}, + columns = 4, + className = "col-lg-3 col-md-3 col-xs-12 points-fade-in", + delay = 0.1; + + module.init = function () { + var container = document.getElementsByClassName("points-users")[0]; + var i, + len = ajaxify.data.users.length, + payload, + htmlRow, + htmlUser; + + for (i = 0; i < len; ++i) { + payload = ajaxify.data.users[i]; + + if (i % columns === 0) { + htmlRow = document.createElement("div"); + htmlRow.className = "row"; + container.appendChild(htmlRow); + } + + htmlUser = document.createElement("div"); + htmlUser.className = className; + htmlUser.style["animation-delay"] = delay * i + "s"; + htmlUser.innerHTML = payload; + htmlRow.appendChild(htmlUser); + } + }; + + return module; }); diff --git a/public/templates/client/points/overview.tpl b/public/templates/points/overview.tpl similarity index 100% rename from public/templates/client/points/overview.tpl rename to public/templates/points/overview.tpl diff --git a/public/templates/client/points/user.tpl b/public/templates/points/user.tpl similarity index 100% rename from public/templates/client/points/user.tpl rename to public/templates/points/user.tpl diff --git a/style/_animation.less b/style/_animation.scss similarity index 100% rename from style/_animation.less rename to style/_animation.scss diff --git a/style/_vars.less b/style/_vars.less deleted file mode 100644 index 93bb7a8..0000000 --- a/style/_vars.less +++ /dev/null @@ -1,17 +0,0 @@ -@avatar-size: 100px; -@progress-height: 8px; -@ns-points-badge-font-size: 2rem; -@ns-points-avatar-font-size: 5rem; -@ns-points-badge-size: 32px; -@username-size: 1.8em; -@rank-padding: 6px; -@padding-s: 8px; -@line-margin: 16px; -@block-margin: 24px; - -@color-light: #FFFFFF; -@color-dark: #000000; - -@font-normal: 300; -@font-narrow: 100; -@font-bold: 700; \ No newline at end of file diff --git a/style/_vars.scss b/style/_vars.scss new file mode 100644 index 0000000..3db044b --- /dev/null +++ b/style/_vars.scss @@ -0,0 +1,17 @@ +$avatar-size: 100px; +$progress-height: 8px; +$ns-points-badge-font-size: 2rem; +$ns-points-avatar-font-size: 5rem; +$ns-points-badge-size: 32px; +$username-size: 1.8em; +$rank-padding: 6px; +$padding-s: 8px; +$line-margin: 16px; +$block-margin: 24px; + +$color-light: #ffffff; +$color-dark: #000000; + +$font-normal: 300; +$font-narrow: 100; +$font-bold: 700; diff --git a/style/client.less b/style/client.scss similarity index 61% rename from style/client.less rename to style/client.scss index 2ed1191..26fc51e 100644 --- a/style/client.less +++ b/style/client.scss @@ -2,15 +2,14 @@ @import "_vars"; .points-container { - .row { - margin-bottom: @line-margin; + margin-bottom: $line-margin; } .points-avatar { position: relative; - width: @avatar-size; - height: @avatar-size; + width: $avatar-size; + height: $avatar-size; padding: 0; flex-shrink: 0; @@ -23,11 +22,11 @@ .icon-thumbnail { width: 100%; height: 100%; - line-height: @avatar-size; - font-size: @ns-points-avatar-font-size; + line-height: $avatar-size; + font-size: $ns-points-avatar-font-size; border-radius: 50%; text-align: center; - color: fade(@color-light, 87%); + color: fade($color-light, 87%); } span { @@ -36,19 +35,19 @@ right: 0; text-align: center; border-radius: 50%; - width: @ns-points-badge-size; - height: @ns-points-badge-size; - line-height: @ns-points-badge-size; - font-size: @ns-points-badge-font-size; - font-weight: @font-normal; - color: fade(@color-light, 90%); - background: fade(@color-dark, 87%); + width: $ns-points-badge-size; + height: $ns-points-badge-size; + line-height: $ns-points-badge-size; + font-size: $ns-points-badge-font-size; + font-weight: $font-normal; + color: fade($color-light, 90%); + background: fade($color-dark, 87%); } } .points-stats { flex: 1; - margin-left: @block-margin; + margin-left: $block-margin; min-width: 0; .points-numbers { @@ -62,8 +61,8 @@ } .progress { - height: @progress-height; - margin: @padding-s 0; + height: $progress-height; + margin: $padding-s 0; } } @@ -72,8 +71,8 @@ } .points-user-name { - font-weight: @font-narrow; - font-size: @username-size; + font-weight: $font-narrow; + font-size: $username-size; display: block; overflow: hidden; @@ -87,4 +86,4 @@ flex-direction: row; flex-wrap: nowrap; } -} \ No newline at end of file +}