Ground work for the bill board announcement feature

pull/8076/head
benmcmahon100 2016-04-12 01:02:17 +01:00
parent 729f966952
commit a27c5ccdd2
5 changed files with 99 additions and 0 deletions

View File

@ -612,4 +612,38 @@ $(document).ready(function() {
// Repo // Repo
window.location = 'https://github.com/freecodecamp/freecodecamp/'; window.location = 'https://github.com/freecodecamp/freecodecamp/';
}); });
function getCurrentBillBoard(cb) {
$.ajax({
url: '/billboard',
method: 'GET',
dataType: 'JSON'
}).done((resp) => {
cb(resp);
});
}
function handleNewBillBoard(message) {
const seen = typeof localStorage.getItem('billboardSeen') !== "undefined" ? localStorage.getItem('billboardSeen') : 'false';
let old = typeof localStorage.getItem('billboard') !== "undefined" ? localStorage.getItem('billboard') : 'false';
if(seen !== 'true') {
old = null;
}
if(message.data !== old) {
if(!message.err) {
$('#billContent').text(message.data);
localStorage.setItem('billboard', message.data)
} else {
console.error(message.err);
}
}
}
getCurrentBillBoard(handleNewBillBoard);
$('#dismissBill').on('click', () => {
console.log("test");
localStorage.setItem('billboardSeen', 'true');
});
}); });

View File

@ -0,0 +1,34 @@
{
"name": "BillBoard",
"base": "PersistedModel",
"idInjection": true,
"trackChanges": false,
"properties": {
"message": {
"type": "string"
},
"active": {
"type": "boolean",
"default": false
}
},
"validations": [],
"relations": {
},
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "READ",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "ALLOW"
}
],
"methods": []
}

View File

@ -7,6 +7,7 @@ import secrets from '../../config/secrets';
module.exports = function(app) { module.exports = function(app) {
const router = app.loopback.Router(); const router = app.loopback.Router();
const User = app.models.User; const User = app.models.User;
const BillBoard = app.models.BillBoard;
router.get('/api/github', githubCalls); router.get('/api/github', githubCalls);
router.get('/api/blogger', bloggerCalls); router.get('/api/blogger', bloggerCalls);
router.get('/api/trello', trelloCalls); router.get('/api/trello', trelloCalls);
@ -38,6 +39,7 @@ module.exports = function(app) {
'/the-fastest-web-page-on-the-internet', '/the-fastest-web-page-on-the-internet',
theFastestWebPageOnTheInternet theFastestWebPageOnTheInternet
); );
router.get('/billBoard', billBoard);
app.use(router); app.use(router);
@ -82,6 +84,25 @@ module.exports = function(app) {
}); });
} }
function billBoard(req, res) {
if(req.user && typeof req.user.currentChallenge.challengeId !== "undefined"){
BillBoard.findOne({}, function(err, data){
if(err){
res.send({err: {type: "Error", message: "Database Error"}, data: null});
} else {
if (data.active) {
res.send({err: null, data: data.message});
} else {
res.send({err: {type: "warning", message: "Bill Board is not active"}, data: null});
}
}
});
}
else {
res.send({err: {type: "warning", message: "User Not Signed In"}, data: null});
}
}
function theFastestWebPageOnTheInternet(req, res) { function theFastestWebPageOnTheInternet(req, res) {
res.render('resources/the-fastest-web-page-on-the-internet', { res.render('resources/the-fastest-web-page-on-the-internet', {
title: 'This is the fastest web page on the internet' title: 'This is the fastest web page on the internet'

View File

@ -66,5 +66,9 @@
"userIdentity": { "userIdentity": {
"dataSource": "db", "dataSource": "db",
"public": true "public": true
},
"BillBoard": {
"dataSource": "db",
"public": true
} }
} }

View File

@ -18,3 +18,9 @@
span.ion-close-circled span.ion-close-circled
for success in messages.success for success in messages.success
div!= success.msg div!= success.msg
.row.flashMessage
.col-xs-12
.alert.alert-success.fade.in
button.close(type='button', data-dismiss='alert')
span.ion-close-circled#dismissBill
#billContent