From a27c5ccdd23c11841c6565ad6166a937dd0c18fe Mon Sep 17 00:00:00 2001 From: benmcmahon100 Date: Tue, 12 Apr 2016 01:02:17 +0100 Subject: [PATCH 1/9] Ground work for the bill board announcement feature --- client/main.js | 34 ++++++++++++++++++++++++++++++++ common/models/BillBoard.json | 34 ++++++++++++++++++++++++++++++++ server/boot/randomAPIs.js | 21 ++++++++++++++++++++ server/model-config.json | 4 ++++ server/views/partials/flash.jade | 6 ++++++ 5 files changed, 99 insertions(+) create mode 100644 common/models/BillBoard.json diff --git a/client/main.js b/client/main.js index b7ed7c9bd0..7a969d8c95 100644 --- a/client/main.js +++ b/client/main.js @@ -612,4 +612,38 @@ $(document).ready(function() { // Repo 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'); + }); + }); diff --git a/common/models/BillBoard.json b/common/models/BillBoard.json new file mode 100644 index 0000000000..6647dab585 --- /dev/null +++ b/common/models/BillBoard.json @@ -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": [] +} diff --git a/server/boot/randomAPIs.js b/server/boot/randomAPIs.js index 3fd3f953bd..66c44d1331 100644 --- a/server/boot/randomAPIs.js +++ b/server/boot/randomAPIs.js @@ -7,6 +7,7 @@ import secrets from '../../config/secrets'; module.exports = function(app) { const router = app.loopback.Router(); const User = app.models.User; + const BillBoard = app.models.BillBoard; router.get('/api/github', githubCalls); router.get('/api/blogger', bloggerCalls); router.get('/api/trello', trelloCalls); @@ -38,6 +39,7 @@ module.exports = function(app) { '/the-fastest-web-page-on-the-internet', theFastestWebPageOnTheInternet ); + router.get('/billBoard', billBoard); 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) { res.render('resources/the-fastest-web-page-on-the-internet', { title: 'This is the fastest web page on the internet' diff --git a/server/model-config.json b/server/model-config.json index 1b9d552ab9..30e527c45d 100644 --- a/server/model-config.json +++ b/server/model-config.json @@ -66,5 +66,9 @@ "userIdentity": { "dataSource": "db", "public": true + }, + "BillBoard": { + "dataSource": "db", + "public": true } } diff --git a/server/views/partials/flash.jade b/server/views/partials/flash.jade index e76ab6edf4..2888e97d6c 100644 --- a/server/views/partials/flash.jade +++ b/server/views/partials/flash.jade @@ -18,3 +18,9 @@ span.ion-close-circled for success in messages.success 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 \ No newline at end of file From 2b2b359514f391220d09f7ffe087a2ec000cb6a7 Mon Sep 17 00:00:00 2001 From: benmcmahon100 Date: Tue, 12 Apr 2016 21:59:57 +0100 Subject: [PATCH 2/9] Bill board feature up and running --- client/main.js | 55 +++++++++++++++++++++----------- server/boot/randomAPIs.js | 41 ++++++++++++++++++------ server/views/partials/flash.jade | 2 +- 3 files changed, 70 insertions(+), 28 deletions(-) diff --git a/client/main.js b/client/main.js index 7a969d8c95..db28dec2c1 100644 --- a/client/main.js +++ b/client/main.js @@ -124,6 +124,28 @@ main = (function(main, global) { Mousetrap.bind('g c', toggleMainChat); }); + function localStorageIO(item = '', input = null) { + if (input) { + try { + input = typeof input === 'string' ? input : JSON.stringify(input); + } catch (e) { + // Do Nothing + } + localStorage.setItem(item, input); + return input; + } else { + let data = localStorage.getItem(item); + try { + data = JSON.parse(data); + } catch (e) { + // Do Nothing + } + return data; + } + } + + main.localStorageIO = localStorageIO; + return main; }(main, window)); @@ -621,29 +643,26 @@ $(document).ready(function() { }).done((resp) => { cb(resp); }); + $('#dismissBill').on('click', (e) => { + const elemData + = e.target.parentNode.parentNode.children; + + const res + = elemData[Object.keys(elemData).filter((key)=> { + return elemData[key].id === 'billContent'; + + })[0]].innerHTML; + + main.localStorageIO('lastBillBoardSeen', res); + }); } 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); - } + if (main.localStorageIO('lastBillBoardSeen') !== message.data) { + $('#billContent').text(message.data); + $('#billBoard').fadeIn(); } } getCurrentBillBoard(handleNewBillBoard); - - $('#dismissBill').on('click', () => { - console.log("test"); - localStorage.setItem('billboardSeen', 'true'); - }); - }); diff --git a/server/boot/randomAPIs.js b/server/boot/randomAPIs.js index 66c44d1331..39dccaf24b 100644 --- a/server/boot/randomAPIs.js +++ b/server/boot/randomAPIs.js @@ -85,21 +85,44 @@ 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}); + 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}); + res.send({ + err: null, + data: data.message + }); } else { - res.send({err: {type: "warning", message: "Bill Board is not active"}, data: null}); + 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}); + } else { + res.send({ + err: { + type: 'warning', + message: 'User Not Signed In' + }, + data: null + }); } } diff --git a/server/views/partials/flash.jade b/server/views/partials/flash.jade index 2888e97d6c..a84ab6145b 100644 --- a/server/views/partials/flash.jade +++ b/server/views/partials/flash.jade @@ -20,7 +20,7 @@ div!= success.msg .row.flashMessage .col-xs-12 - .alert.alert-success.fade.in + #billBoard.alert.alert-success.fade.in(style="display: none;") button.close(type='button', data-dismiss='alert') span.ion-close-circled#dismissBill #billContent \ No newline at end of file From d53a2eec860bacf5ceab3847d1b9d1553426d984 Mon Sep 17 00:00:00 2001 From: benmcmahon100 Date: Wed, 13 Apr 2016 00:05:13 +0100 Subject: [PATCH 3/9] BillBoard now Flyer. Changes to API and view logic Fix to replace of null error. Changed Flyer to flyer --- client/main.js | 19 ++++++--- common/models/{BillBoard.json => Flyer.json} | 2 +- server/boot/randomAPIs.js | 44 -------------------- server/model-config.json | 2 +- 4 files changed, 15 insertions(+), 52 deletions(-) rename common/models/{BillBoard.json => Flyer.json} (96%) diff --git a/client/main.js b/client/main.js index db28dec2c1..0b17f18749 100644 --- a/client/main.js +++ b/client/main.js @@ -134,7 +134,7 @@ main = (function(main, global) { localStorage.setItem(item, input); return input; } else { - let data = localStorage.getItem(item); + let data = typeof localStorage.getItem(item) !== 'undefined' && localStorage.getItem(item) !== null ? localStorage.getItem(item) : ""; try { data = JSON.parse(data); } catch (e) { @@ -637,9 +637,11 @@ $(document).ready(function() { function getCurrentBillBoard(cb) { $.ajax({ - url: '/billboard', + url: '/api/Flyers/findOne?' + + 'filter=%7B%22order%22%3A%20%20%22id%20DESC%22%7D', method: 'GET', - dataType: 'JSON' + dataType: 'JSON', + data: {'order': 'id DESC'} }).done((resp) => { cb(resp); }); @@ -657,9 +659,14 @@ $(document).ready(function() { }); } - function handleNewBillBoard(message) { - if (main.localStorageIO('lastBillBoardSeen') !== message.data) { - $('#billContent').text(message.data); + function handleNewBillBoard(resp) { + const data = typeof main.localStorageIO('lastBillBoardSeen') !== "undefined" && main.localStorageIO('lastBillBoardSeen') !== null ? main.localStorageIO('lastBillBoardSeen') : ""; + if ( + data.replace(/\s/gi, '') + !== resp.message.replace(/\s/gi, '') + && resp.active + ) { + $('#billContent').html(resp.message); $('#billBoard').fadeIn(); } } diff --git a/common/models/BillBoard.json b/common/models/Flyer.json similarity index 96% rename from common/models/BillBoard.json rename to common/models/Flyer.json index 6647dab585..35766a5fdb 100644 --- a/common/models/BillBoard.json +++ b/common/models/Flyer.json @@ -1,5 +1,5 @@ { - "name": "BillBoard", + "name": "Flyer", "base": "PersistedModel", "idInjection": true, "trackChanges": false, diff --git a/server/boot/randomAPIs.js b/server/boot/randomAPIs.js index 39dccaf24b..3fd3f953bd 100644 --- a/server/boot/randomAPIs.js +++ b/server/boot/randomAPIs.js @@ -7,7 +7,6 @@ import secrets from '../../config/secrets'; module.exports = function(app) { const router = app.loopback.Router(); const User = app.models.User; - const BillBoard = app.models.BillBoard; router.get('/api/github', githubCalls); router.get('/api/blogger', bloggerCalls); router.get('/api/trello', trelloCalls); @@ -39,7 +38,6 @@ module.exports = function(app) { '/the-fastest-web-page-on-the-internet', theFastestWebPageOnTheInternet ); - router.get('/billBoard', billBoard); app.use(router); @@ -84,48 +82,6 @@ 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) { res.render('resources/the-fastest-web-page-on-the-internet', { title: 'This is the fastest web page on the internet' diff --git a/server/model-config.json b/server/model-config.json index 30e527c45d..60800cf81b 100644 --- a/server/model-config.json +++ b/server/model-config.json @@ -67,7 +67,7 @@ "dataSource": "db", "public": true }, - "BillBoard": { + "flyer": { "dataSource": "db", "public": true } From bc8a6c92bf0021980a11ea831cd4f49fa8c3bfcb Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Tue, 12 Apr 2016 20:33:58 -0700 Subject: [PATCH 4/9] Fix broken lint tests --- client/main.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/client/main.js b/client/main.js index 0b17f18749..8a4002ca0b 100644 --- a/client/main.js +++ b/client/main.js @@ -134,7 +134,9 @@ main = (function(main, global) { localStorage.setItem(item, input); return input; } else { - let data = typeof localStorage.getItem(item) !== 'undefined' && localStorage.getItem(item) !== null ? localStorage.getItem(item) : ""; + let data = typeof localStorage.getItem(item) + !== 'undefined' && localStorage.getItem(item) + !== null ? localStorage.getItem(item) : ''; try { data = JSON.parse(data); } catch (e) { @@ -660,7 +662,9 @@ $(document).ready(function() { } function handleNewBillBoard(resp) { - const data = typeof main.localStorageIO('lastBillBoardSeen') !== "undefined" && main.localStorageIO('lastBillBoardSeen') !== null ? main.localStorageIO('lastBillBoardSeen') : ""; + const data = typeof main.localStorageIO('lastBillBoardSeen') + !== 'undefined' && main.localStorageIO('lastBillBoardSeen') + !== null ? main.localStorageIO('lastBillBoardSeen') : ''; if ( data.replace(/\s/gi, '') !== resp.message.replace(/\s/gi, '') From 4fa1e2f405b4d6e85f2040dc5f82aaa648985f7e Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Tue, 12 Apr 2016 23:27:58 -0700 Subject: [PATCH 5/9] Make flyer show up in various views (but not in all, avoiding the map and wiki view problems) --- server/views/account/show.jade | 3 ++- server/views/challenges/showBonfire.jade | 1 + server/views/challenges/showHTML.jade | 1 + server/views/challenges/showJS.jade | 1 + server/views/challenges/showStep.jade | 1 + server/views/challenges/showVideo.jade | 1 + server/views/challenges/showZiplineOrBasejump.jade | 1 + server/views/partials/flyer.jade | 7 +++++++ 8 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 server/views/partials/flyer.jade diff --git a/server/views/account/show.jade b/server/views/account/show.jade index df88282365..568fd5ea4d 100644 --- a/server/views/account/show.jade +++ b/server/views/account/show.jade @@ -1,5 +1,6 @@ extends ../layout block content + include ../partials/flyer script(src="/bower_components/cal-heatmap/cal-heatmap.min.js") script. var challengeName = 'Profile View'; @@ -170,4 +171,4 @@ block content if (challenge.solution) a(href='/challenges/' + removeOldTerms(challenge.name) + '?solution=' + encodeURIComponent(encodeFcc(challenge.solution)), target='_blank')= removeOldTerms(challenge.name) else - a(href='/challenges/' + removeOldTerms(challenge.name))= removeOldTerms(challenge.name) \ No newline at end of file + a(href='/challenges/' + removeOldTerms(challenge.name))= removeOldTerms(challenge.name) diff --git a/server/views/challenges/showBonfire.jade b/server/views/challenges/showBonfire.jade index 8ab0684c4a..6bb918d579 100644 --- a/server/views/challenges/showBonfire.jade +++ b/server/views/challenges/showBonfire.jade @@ -4,6 +4,7 @@ block content link(rel='stylesheet', href='/bower_components/CodeMirror/addon/lint/lint.css') link(rel='stylesheet', href='/bower_components/CodeMirror/theme/monokai.css') link(rel='stylesheet', href='/css/ubuntu.css') + include ../partials/flyer .row .col-md-4.col-lg-3 .scroll-locker(id = "scroll-locker") diff --git a/server/views/challenges/showHTML.jade b/server/views/challenges/showHTML.jade index 0d08346825..7835148327 100644 --- a/server/views/challenges/showHTML.jade +++ b/server/views/challenges/showHTML.jade @@ -4,6 +4,7 @@ block content link(rel='stylesheet', href='/bower_components/CodeMirror/addon/lint/lint.css') link(rel='stylesheet', href='/bower_components/CodeMirror/theme/monokai.css') link(rel='stylesheet', href='/css/ubuntu.css') + include ../partials/flyer .row .col-md-3.col-lg-3 .scroll-locker(id = "scroll-locker") diff --git a/server/views/challenges/showJS.jade b/server/views/challenges/showJS.jade index eae63ab02a..3939b29bed 100644 --- a/server/views/challenges/showJS.jade +++ b/server/views/challenges/showJS.jade @@ -4,6 +4,7 @@ block content link(rel='stylesheet', href='/bower_components/CodeMirror/addon/lint/lint.css') link(rel='stylesheet', href='/bower_components/CodeMirror/theme/monokai.css') link(rel='stylesheet', href='/css/ubuntu.css') + include ../partials/flyer .row .col-md-4.col-lg-3 .scroll-locker(id = "scroll-locker") diff --git a/server/views/challenges/showStep.jade b/server/views/challenges/showStep.jade index 1249b842a2..d276c836c8 100644 --- a/server/views/challenges/showStep.jade +++ b/server/views/challenges/showStep.jade @@ -1,5 +1,6 @@ extends ../layout-wide block content + include ../partials/flyer .row .col-md-8.col-md-offset-2 for step, index in description diff --git a/server/views/challenges/showVideo.jade b/server/views/challenges/showVideo.jade index bf3d45636b..f29911013e 100644 --- a/server/views/challenges/showVideo.jade +++ b/server/views/challenges/showVideo.jade @@ -1,5 +1,6 @@ extends ../layout-wide block content + include ../partials/flyer .row .col-xs-12.col-sm-12.col-md-4 h4.text-center.challenge-instructions-title= name diff --git a/server/views/challenges/showZiplineOrBasejump.jade b/server/views/challenges/showZiplineOrBasejump.jade index 19197c1795..5c3639a8d6 100644 --- a/server/views/challenges/showZiplineOrBasejump.jade +++ b/server/views/challenges/showZiplineOrBasejump.jade @@ -1,5 +1,6 @@ extends ../layout-wide block content + include ../partials/flyer .row .col-md-4 h4.text-center.challenge-instructions-title= name diff --git a/server/views/partials/flyer.jade b/server/views/partials/flyer.jade new file mode 100644 index 0000000000..6b1d374006 --- /dev/null +++ b/server/views/partials/flyer.jade @@ -0,0 +1,7 @@ +.container + .row.flashMessage.negative-30 + .col-xs-12 + #billBoard.alert.alert-info.fade.in(style="display: none;") + button.close(type='button', data-dismiss='alert') + span.ion-close-circled#dismissBill + #billContent From 79261f1793a4bbcdb18e6e5c673299db874a88d8 Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Tue, 12 Apr 2016 23:28:38 -0700 Subject: [PATCH 6/9] Make the flash message look narrower (and much better) --- server/views/partials/flash.jade | 47 ++++++++++++++------------------ 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/server/views/partials/flash.jade b/server/views/partials/flash.jade index a84ab6145b..8668a4174d 100644 --- a/server/views/partials/flash.jade +++ b/server/views/partials/flash.jade @@ -1,26 +1,21 @@ -.row.flashMessage - .col-xs-12 - if (messages.errors || messages.error) - .alert.alert-danger.fade.in - button.close(type='button', data-dismiss='alert') - span.ion-close-circled - for error in (messages.errors || messages.error) - div!= error.msg || error - if messages.info - .alert.alert-info.fade.in - button.close(type='button', data-dismiss='alert') - span.ion-close-circled - for info in messages.info - div!= info.msg - if messages.success - .alert.alert-success.fade.in - button.close(type='button', data-dismiss='alert') - span.ion-close-circled - for success in messages.success - div!= success.msg -.row.flashMessage - .col-xs-12 - #billBoard.alert.alert-success.fade.in(style="display: none;") - button.close(type='button', data-dismiss='alert') - span.ion-close-circled#dismissBill - #billContent \ No newline at end of file +.container + .row.flashMessage.negative-30 + .col-xs-12 + if (messages.errors || messages.error) + .alert.alert-danger.fade.in + button.close(type='button', data-dismiss='alert') + span.ion-close-circled + for error in (messages.errors || messages.error) + div!= error.msg || error + if messages.info + .alert.alert-info.fade.in + button.close(type='button', data-dismiss='alert') + span.ion-close-circled + for info in messages.info + div!= info.msg + if messages.success + .alert.alert-success.fade.in + button.close(type='button', data-dismiss='alert') + span.ion-close-circled + for success in messages.success + div!= success.msg From f0c8e06574d3aa1f85e156c736011f0632a4bbf4 Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Tue, 12 Apr 2016 23:28:56 -0700 Subject: [PATCH 7/9] rename the Flyer object to flyer --- common/models/Flyer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/models/Flyer.json b/common/models/Flyer.json index 35766a5fdb..251bbb0d15 100644 --- a/common/models/Flyer.json +++ b/common/models/Flyer.json @@ -1,5 +1,5 @@ { - "name": "Flyer", + "name": "flyer", "base": "PersistedModel", "idInjection": true, "trackChanges": false, From 66fda23dac9e5f11d808acde69f9a6738042f41a Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Tue, 12 Apr 2016 23:41:24 -0700 Subject: [PATCH 8/9] Improve style on flash notification and make flyer conditional on logged in user with at least 6 points Lower case model json file --- common/models/{Flyer.json => flyer.json} | 0 server/views/layout.jade | 2 +- server/views/partials/flyer.jade | 15 ++++++++------- 3 files changed, 9 insertions(+), 8 deletions(-) rename common/models/{Flyer.json => flyer.json} (100%) diff --git a/common/models/Flyer.json b/common/models/flyer.json similarity index 100% rename from common/models/Flyer.json rename to common/models/flyer.json diff --git a/server/views/layout.jade b/server/views/layout.jade index f64024fdf9..eefd4090e0 100644 --- a/server/views/layout.jade +++ b/server/views/layout.jade @@ -6,7 +6,7 @@ html(lang='en') body.top-and-bottom-margins include partials/scripts include partials/navbar + include partials/flash .container - include partials/flash block content include partials/footer diff --git a/server/views/partials/flyer.jade b/server/views/partials/flyer.jade index 6b1d374006..92d99e5c21 100644 --- a/server/views/partials/flyer.jade +++ b/server/views/partials/flyer.jade @@ -1,7 +1,8 @@ -.container - .row.flashMessage.negative-30 - .col-xs-12 - #billBoard.alert.alert-info.fade.in(style="display: none;") - button.close(type='button', data-dismiss='alert') - span.ion-close-circled#dismissBill - #billContent +if (user && user.points > 5) + .container + .row.flashMessage.negative-30 + .col-xs-12 + #billBoard.alert.alert-info.fade.in(style="display: none;") + button.close(type='button', data-dismiss='alert') + span.ion-close-circled#dismissBill + #billContent From 07c8422ee75761eaaa40a4ab338487d7a0cb849e Mon Sep 17 00:00:00 2001 From: benmcmahon100 Date: Wed, 13 Apr 2016 23:33:35 +0100 Subject: [PATCH 9/9] Made the message comparison more strict --- client/main.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/client/main.js b/client/main.js index 8a4002ca0b..7e50247a10 100644 --- a/client/main.js +++ b/client/main.js @@ -639,7 +639,7 @@ $(document).ready(function() { function getCurrentBillBoard(cb) { $.ajax({ - url: '/api/Flyers/findOne?' + url: '/api/flyers/findOne?' + 'filter=%7B%22order%22%3A%20%20%22id%20DESC%22%7D', method: 'GET', dataType: 'JSON', @@ -666,8 +666,13 @@ $(document).ready(function() { !== 'undefined' && main.localStorageIO('lastBillBoardSeen') !== null ? main.localStorageIO('lastBillBoardSeen') : ''; if ( - data.replace(/\s/gi, '') - !== resp.message.replace(/\s/gi, '') + data.replace(/\s*/gi, '') + .replace(/\&\w*\;/gi, '') + .replace(/(\<|\/|\>)/gi, '') + !== resp.message + .replace(/\s*/gi, '') + .replace(/\&\w*\;/gi, '') + .replace(/(\<|\/|\>)/gi, '') && resp.active ) { $('#billContent').html(resp.message);