Create addIndexLink api func for web to link to index not based on module name. Correct titles for notifications + bans. Also hopefully fix the fineWebPerms access for PUs/Mods [close #565]

This commit is contained in:
reality 2013-08-24 13:56:45 +00:00
parent 165c9491a9
commit 405b3d47e4
12 changed files with 42 additions and 28 deletions

View File

@ -126,6 +126,10 @@ var kick = function(dbot) {
this.internalAPI.addTempBan(server, nick, timeout); this.internalAPI.addTempBan(server, nick, timeout);
}, this); }, this);
}, this); }, this);
if(_.has(dbot.modules, 'web')) {
dbot.api.web.addIndexLink('/bans', 'Ban List');
}
}.bind(this); }.bind(this);
}; };

View File

@ -2,13 +2,13 @@ var _ = require('underscore')._;
var pages = function(dbot) { var pages = function(dbot) {
return { return {
'/kick': function(req, res) { '/bans': function(req, res) {
res.render('servers', { res.render('servers', {
'servers': _.keys(dbot.config.servers) 'servers': _.keys(dbot.config.servers)
}); });
}, },
'/kick/:server': function(req, res) { '/bans/:server': function(req, res) {
var server = req.params.server, var server = req.params.server,
bans = []; bans = [];

View File

@ -2,14 +2,14 @@ var _ = require('underscore')._;
var pages = function(dbot) { var pages = function(dbot) {
var pages = { var pages = {
'/report': function(req, res) { '/notify': function(req, res) {
res.render('servers', { res.render('servers', {
'name': dbot.config.name, 'name': dbot.config.name,
'servers': _.keys(dbot.config.servers) 'servers': _.keys(dbot.config.servers)
}); });
}, },
'/report/:server': function(req, res) { '/notify/:server': function(req, res) {
var server = req.params.server; var server = req.params.server;
res.render('channels', { res.render('channels', {
'name': dbot.config.name, 'name': dbot.config.name,
@ -18,7 +18,7 @@ var pages = function(dbot) {
}); });
}, },
'/report/:server/missing': function(req, res) { '/notify/:server/missing': function(req, res) {
var server = req.params.server, var server = req.params.server,
user = req.user, user = req.user,
notifies = this.pending[user.id]; notifies = this.pending[user.id];
@ -35,7 +35,7 @@ var pages = function(dbot) {
} }
}, },
'/report/:server/:channel': function(req, res) { '/notify/:server/:channel': function(req, res) {
var server = req.params.server, var server = req.params.server,
channel = req.params.channel, channel = req.params.channel,
notifies = []; notifies = [];

View File

@ -184,6 +184,12 @@ var report = function(dbot) {
commands['~report'].regex = [/^~report ([^ ]+) ([^ ]+) (.+)$/, 4]; commands['~report'].regex = [/^~report ([^ ]+) ([^ ]+) (.+)$/, 4];
commands['~notify'].regex = [/^~notify ([^ ]+) (.+)$/, 3]; commands['~notify'].regex = [/^~notify ([^ ]+) (.+)$/, 3];
this.commands = commands; this.commands = commands;
this.onLoad = function() {
if(_.has(dbot.modules, 'web')) {
dbot.api.web.addIndexLink('/notify', 'Notifications');
}
};
}; };
exports.fetch = function(dbot) { exports.fetch = function(dbot) {

View File

@ -8,6 +8,7 @@ var express = require('express'),
var webInterface = function(dbot) { var webInterface = function(dbot) {
this.config = dbot.config.modules.web; this.config = dbot.config.modules.web;
this.indexLinks = {};
this.pub = 'public'; this.pub = 'public';
this.app = express(); this.app = express();
@ -85,25 +86,25 @@ var webInterface = function(dbot) {
}.bind(this); }.bind(this);
this.onLoad = function() { this.onLoad = function() {
var routes = _.pluck(dbot.modules.web.app.routes.get, 'path'); var routes = _.pluck(dbot.modules.web.app.routes.get, 'path'),
var moduleNames = _.keys(dbot.modules); moduleNames = _.keys(dbot.modules);
var indexModules = [];
// fix the thingy
_.each(moduleNames, function(moduleName) { _.each(moduleNames, function(moduleName) {
var modulePath = '/' + moduleName; var modulePath = '/' + moduleName;
if(_.include(routes, modulePath)) { if(_.include(routes, modulePath)) {
indexModules.push(moduleName); moduleName = moduleName.charAt(0).toUpperCase() +
moduleName.slice(1);
this.indexLinks[modulePath] = moduleName;
} }
}); }.bind(this));
this.app.get('/', function(req, res) { this.app.get('/', function(req, res) {
res.render('index', { res.render('index', {
'name': dbot.config.name, 'name': dbot.config.name,
'user': req.user, 'user': req.user,
'routes': indexModules 'routes': this.indexLinks
}); });
}); }.bind(this));
this.app.get('/login', function(req, res) { this.app.get('/login', function(req, res) {
res.render('login', { res.render('login', {
@ -147,6 +148,10 @@ var webInterface = function(dbot) {
} }
}, },
'addIndexLink': function(route, title) {
this.indexLinks[route] = title;
},
'getWebUser': function(id, callback) { 'getWebUser': function(id, callback) {
this.db.read('web_users', id, function(err, webUser) { this.db.read('web_users', id, function(err, webUser) {
callback(webUser); callback(webUser);
@ -155,9 +160,8 @@ var webInterface = function(dbot) {
'hasAccess': function(req, res, next) { 'hasAccess': function(req, res, next) {
var path = req.route.path, var path = req.route.path,
module = path.split('/')[1], module = dbot.pages[path].module,
mConfig = dbot.config.modules[module]; mConfig = dbot.config.modules[module];
module = dbot.modules[module];
if(mConfig.requireWebLogin == true) { if(mConfig.requireWebLogin == true) {
if(req.isAuthenticated()) { if(req.isAuthenticated()) {
@ -170,10 +174,10 @@ var webInterface = function(dbot) {
if(accessNeeded != 'regular') { if(accessNeeded != 'regular') {
var allowedUsers = dbot.config.admins; var allowedUsers = dbot.config.admins;
if(module.config.webAccess == 'moderators') { if(mConfig.webAccess == 'moderators') {
allowedUsers = _.union(allowedUsers, dbot.config.moderators); allowedUsers = _.union(allowedUsers, dbot.config.moderators);
} }
if(module.config.webAccess == 'power_users') { if(mConfig.webAccess == 'power_users') {
allowedUsers = _.union(allowedUsers, dbot.config.moderators); allowedUsers = _.union(allowedUsers, dbot.config.moderators);
allowedUsers = _.union(allowedUsers, dbot.config.power_users); allowedUsers = _.union(allowedUsers, dbot.config.power_users);
} }

View File

@ -4,5 +4,5 @@ block content
if message if message
p #{message} p #{message}
#modulelinks #modulelinks
- for(var i=0;i<routes.length;i++) for title, route in routes
a.module(href='/'+routes[i]) #{routes[i]} a.module(href=route) #{title}

View File

@ -2,7 +2,7 @@ extends ../layout
block content block content
div#backlink div#backlink
a(href='/kick/') &laquo; Servers a(href='/bans/') &laquo; Servers
p p
div#profile_datatable div#profile_datatable
table.table.table-hover.data table.table.table-hover.data

View File

@ -6,5 +6,5 @@ block content
a(href='/') &laquo; Home a(href='/') &laquo; Home
ul#quotelist ul#quotelist
-each server in servers -each server in servers
a(href='/kick/'+server) a(href='/bans/'+server)
li.quotes #{server} li.quotes #{server}

View File

@ -3,8 +3,8 @@ extends ../layout
block content block content
h3 Channels on #{server} h3 Channels on #{server}
div#backlink div#backlink
a(href='/report') &laquo; Server List a(href='/notify') &laquo; Server List
ul#quotelist ul#quotelist
-each channel in channels -each channel in channels
a(href='/report/'+server+'/'+encodeURIComponent(channel)) a(href='/notify/'+server+'/'+encodeURIComponent(channel))
li.quotes #{channel} li.quotes #{channel}

View File

@ -3,7 +3,7 @@ extends ../layout
block content block content
h3 Notifications Missed by #{user.primaryNick} h3 Notifications Missed by #{user.primaryNick}
div#backlink div#backlink
a(href='/report') &laquo; Notifications a(href='/notify') &laquo; Notifications
p p
if notifies if notifies
div#profile_datatable div#profile_datatable

View File

@ -2,7 +2,7 @@ extends ../layout
block content block content
div#backlink div#backlink
a(href='/report/'+server) &laquo; Server Channels a(href='/notify/'+server) &laquo; Server Channels
p p
div#profile_datatable div#profile_datatable
table.table.table-hover.data table.table.table-hover.data

View File

@ -5,8 +5,8 @@ block content
div#backlink div#backlink
a(href='/') &laquo; Home a(href='/') &laquo; Home
div div
a(href='/report/'+user.server+'/missing') My Missed Notifications a(href='/notify/'+user.server+'/missing') My Missed Notifications
ul#quotelist ul#quotelist
-each server in servers -each server in servers
a(href='/report/'+server) a(href='/notify/'+server)
li.quotes #{server} li.quotes #{server}