-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathlibrary.js
More file actions
68 lines (51 loc) · 1.91 KB
/
library.js
File metadata and controls
68 lines (51 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"use strict";
var controllers = require('./lib/controllers'),
paypal = require('./lib/paypal'),
nconf = module.parent.require('nconf'),
winston = module.parent.require('winston'),
plugin = {};
plugin.init = function(params, callback) {
var router = params.router,
hostMiddleware = params.middleware,
hostControllers = params.controllers;
paypal.configure();
router.get('/admin/plugins/paypal-subscriptions', hostMiddleware.admin.buildHeader, controllers.renderAdminPage);
router.get('/api/admin/plugins/paypal-subscriptions', controllers.renderAdminPage);
router.get('/subscribe', hostMiddleware.buildHeader, paypal.subscribe);
router.get('/api/subscribe', paypal.subscribe);
router.post('/subscribe', paypal.onSubscribe);
router.get('/paypal-subscriptions/success', paypal.onSuccess);
router.post('/paypal-subscriptions/cancel-subscription', paypal.cancelSubscription);
callback();
};
plugin.addAdminNavigation = function(header, callback) {
header.plugins.push({
route: '/plugins/paypal-subscriptions',
icon: 'fa-paypal',
name: 'Paypal Subscriptions'
});
callback(null, header);
};
plugin.addSubscriptionSettings = function(data, callback) {
paypal.isSubscribed(data.uid, function(err, isSubscribed) {
if (isSubscribed) {
data.customSettings.push({
title: 'Forum Subscription',
content: '<button class="btn btn-danger" id="btn-cancel-subscription">Cancel Subscription</button><form id="cancel-subscription" method="POST" action="/paypal-subscriptions/cancel-subscription"></form>'
});
}
callback(null, data);
});
};
plugin.redirectToSubscribe = function(data, callback) {
if (!data.req.uid || (!data.req.path.match('/topic') && !data.req.path.match('/category'))) {
return callback(false, data);
}
var url = nconf.get('relative_path') + '/subscribe';
if (data.res.locals.isAPI) {
data.res.status(308).json(url);
} else {
data.res.redirect(url);
}
};
module.exports = plugin;