From ef2afa13e88626b87518f0038e88063c7a360483 Mon Sep 17 00:00:00 2001 From: Yaman Qalieh Date: Mon, 29 Aug 2016 20:39:36 -0400 Subject: [PATCH 1/4] make themeColors global --- hourglass/client/main/main.js | 44 +++++++---------------------------- 1 file changed, 8 insertions(+), 36 deletions(-) diff --git a/hourglass/client/main/main.js b/hourglass/client/main/main.js index 55c49ea..83bbd01 100644 --- a/hourglass/client/main/main.js +++ b/hourglass/client/main/main.js @@ -11,34 +11,6 @@ var openValues = { "options": "-20%" }; -Session.set('themeColors', { - "light": { - "background": "White.jpg", - "header": "#EBEBEB", - "sidebar": "#65839A", - "funcButton": "#849CAE", - "statusIcons": "#33ADFF", - "highlightText": "#FF1A1A", - "cards": "#FEFEFE", - "classes":"#EBEBEB", - "calendar": "#000", - "text": "#000" - }, - "dark": { - "background": "Black.jpg", - "header": "#373A56", - "sidebar": "#35435D", - "funcButton": "#5d75A2", - "statusIcons": "#33ADFF", - "highlightText": "#FF1A1A", - "cards": "#151A2B", - "classes":"#46396E", - "calendar": "#000", - //30313B - "text": "#F6F6F6" - } -}); - var workColors = { "normal": "#2E4F74", "quiz": "#409333", @@ -80,11 +52,11 @@ Session.set("classDispHover",null); Session.set("commentRestrict",null); Template.registerHelper('divColor', (div) => { // Reactive color changing based on preferences. Colors stored in Session.get("themeColors"). - return Session.get("themeColors")[Meteor.user().profile.preferences.theme][div]; + return themeColors[Meteor.user().profile.preferences.theme][div]; }); Template.registerHelper('textColor', () => { // Reactive color for text. - document.getElementsByTagName("body")[0].style.color = Session.get("themeColors")[Meteor.user().profile.preferences.theme].text; + document.getElementsByTagName("body")[0].style.color = themeColors[Meteor.user().profile.preferences.theme].text; return; }); @@ -93,7 +65,7 @@ Template.registerHelper('overlayDim', (part) => { // Gets size of the overlay co var width = "width:" + dim[0].toString() + "px;"; var height = "height:" + dim[1].toString() + "px;"; var margin = "margin-left:" + (-dim[0] / 2).toString() + "px;"; - var bg = "background-color:" + Session.get("themeColors")[Meteor.user().profile.preferences.theme].header + ";"; + var bg = "background-color:" + themeColors[Meteor.user().profile.preferences.theme].header + ";"; return width + height + margin + bg; }); @@ -198,9 +170,9 @@ Template.main.helpers({ }, iconColor(icon) { if (Session.get("sidebar") === icon + "Container") { - return Session.get("themeColors")[Meteor.user().profile.preferences.theme].statusIcons; + return themeColors[Meteor.user().profile.preferences.theme].statusIcons; } else if (Session.get("sidebar") === "both") { - return Session.get("themeColors")[Meteor.user().profile.preferences.theme].statusIcons; + return themeColors[Meteor.user().profile.preferences.theme].statusIcons; } else { return; } @@ -214,7 +186,7 @@ Template.main.helpers({ }, bgSrc() { var dim = [window.innerWidth, window.innerHeight]; - var pic = "Backgrounds/"+Session.get("themeColors")[Meteor.user().profile.preferences.theme].background; + var pic = "Backgrounds/"+themeColors[Meteor.user().profile.preferences.theme].background; return pic; }, menuStatus() { @@ -237,7 +209,7 @@ Template.main.helpers({ }, modeStatus(status) { if (status === Session.get("mode")) { - return Session.get("themeColors")[Meteor.user().profile.preferences.theme].highlightText; + return themeColors[Meteor.user().profile.preferences.theme].highlightText; } else { return; } @@ -333,7 +305,7 @@ Template.main.helpers({ return "width:" + width.toString() + "px;margin-left:" + (0.5 * window.innerWidth - 0.5 * width).toString() + "px;"; }, calColor() { - return "color:"+Session.get("themeColors")[Meteor.user().profile.preferences.theme].calendar; + return "color:"+themeColors[Meteor.user().profile.preferences.theme].calendar; }, calbg() { var width = window.innerWidth * 0.865; From 9356b4b04c392d52e74deab033a4fee5fe478d37 Mon Sep 17 00:00:00 2001 From: Yaman Qalieh Date: Mon, 29 Aug 2016 20:40:33 -0400 Subject: [PATCH 2/4] add constants.js --- hourglass/lib/constants.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 hourglass/lib/constants.js diff --git a/hourglass/lib/constants.js b/hourglass/lib/constants.js new file mode 100644 index 0000000..4429490 --- /dev/null +++ b/hourglass/lib/constants.js @@ -0,0 +1,28 @@ +themeColors = { + "light": { + "background": "White.jpg", + "header": "#EBEBEB", + "sidebar": "#65839A", + "funcButton": "#849CAE", + "statusIcons": "#33ADFF", + "highlightText": "#FF1A1A", + "cards": "#FEFEFE", + "classes":"#EBEBEB", + "calendar": "#000", + "text": "#000" + }, + "dark": { + "background": "Black.jpg", + "header": "#373A56", + "sidebar": "#35435D", + "funcButton": "#5d75A2", + "statusIcons": "#33ADFF", + "highlightText": "#FF1A1A", + "cards": "#151A2B", + "classes":"#46396E", + "calendar": "#000", + //30313B + "text": "#F6F6F6" + } +}; + From cb8c9025f48eb7c29230d5590f2f152e88261605 Mon Sep 17 00:00:00 2001 From: Yaman Qalieh Date: Mon, 29 Aug 2016 21:02:02 -0400 Subject: [PATCH 3/4] serverData make global variable --- hourglass/client/main/main.js | 51 ++++++++++++++--------------- hourglass/client/profile/profile.js | 34 +++++++++---------- hourglass/lib/constants.js | 1 + 3 files changed, 42 insertions(+), 44 deletions(-) diff --git a/hourglass/client/main/main.js b/hourglass/client/main/main.js index 83bbd01..a992155 100644 --- a/hourglass/client/main/main.js +++ b/hourglass/client/main/main.js @@ -37,13 +37,12 @@ var ref = { }; // Reactive variables. -Session.set("calendarclasses", null); // +Session.set("calendarclasses", null); // Session.set("sidebar", null); Session.set("newWork",null); Session.set("currentWork",null); Session.set("currentReadableWork",null); Session.set("modifying",null); -Session.set("serverData",null); Session.set("noclass",null); Session.set("calCreWork",null); Session.set("calWorkDate",null); @@ -51,7 +50,7 @@ Session.set("classDisp",[]); Session.set("classDispHover",null); Session.set("commentRestrict",null); -Template.registerHelper('divColor', (div) => { // Reactive color changing based on preferences. Colors stored in Session.get("themeColors"). +Template.registerHelper('divColor', (div) => { // Reactive color changing based on preferences. Colors stored in themeColors. return themeColors[Meteor.user().profile.preferences.theme][div]; }); @@ -69,7 +68,7 @@ Template.registerHelper('overlayDim', (part) => { // Gets size of the overlay co return width + height + margin + bg; }); -Template.registerHelper('myClasses', () => { +Template.registerHelper('myClasses', () => { if (Meteor.user().profile.classes === undefined || Meteor.user().profile.classes.length === 0) { Session.set("noclass",true); return []; @@ -114,7 +113,7 @@ Template.registerHelper('myClasses', () => { } while(thisWork.indexOf("no") !== -1) thisWork.splice(thisWork.indexOf("no"),1); - for(var j = 0; j < thisWork.length; j++) { + for(var j = 0; j < thisWork.length; j++) { thisWork[j].dueDate = moment(thisWork[j].dueDate).calendar(null, { sameDay: '[Today]', nextDay: '[Tomorrow]', @@ -150,7 +149,7 @@ Template.registerHelper('pref', (val) => { if(Object.keys(Meteor.user().profile.preferences).length !== Object.keys(defaults).length) { var array = Meteor.user().profile; array.preferences = defaults; - Session.set("serverData",array); + serverData = array; sendData("editProfile"); if(val === 'timeHide' || val === 'done') return defaults[val]; return defaults[val].charAt(0).toUpperCase() + defaults[val].slice(1); @@ -180,7 +179,7 @@ Template.main.helpers({ defaultMode() { if(load) { Session.set("mode",Meteor.user().profile.preferences.mode); - load = false; + load = false; } return; }, @@ -246,14 +245,14 @@ Template.main.helpers({ var today = (moment().subtract(hide,'days'))["_d"]; if(today > due) { disp = false; - } + } } if(Meteor.user().profile.preferences.done && current.done.indexOf(Meteor.userId()) !== -1) disp = false; var inRole = false; var currClass = classes.findOne({_id: current.class}) - if(Meteor.userId() === current.creator || + if(Meteor.userId() === current.creator || Roles.userIsInRole(Meteor.userId(), ['superadmin', 'admin']) || currClass.moderators.indexOf(Meteor.userId()) !== -1 || currClass.banned.indexOf(Meteor.userId()) !== -1 @@ -281,7 +280,7 @@ Template.main.helpers({ var current = work.findOne({_id:event.id}); var date = event.start.format().split("-"); current.dueDate = new Date(date[0],parseInt(date[1])-1,date[2],11,59,59); - Session.set("serverData",current); + serverData = current; sendData("editWork"); }, eventClick: function(event, jsEvent, view) { @@ -296,7 +295,7 @@ Template.main.helpers({ if(jsEvent.target.className.includes("fc-other-month") || jsEvent.target.className.includes("fc-past")) return; Session.set("calCreWork",true); Session.set("calWorkDate",date.format()); - Session.set("sidebar","menuContainer"); + Session.set("sidebar","menuContainer"); } }; }, @@ -472,14 +471,14 @@ Template.main.events({ closeDivFade(document.getElementsByClassName("overlay")[0]); if(!Session.get("newWork")) { if(getHomeworkFormData() === null) return; - Session.set("serverData",Session.get("currentWork")); + serverData = Session.get("currentWork"); sendData("editWork"); document.getElementById("workComment").value = ""; } Session.set("newWork",null); Session.set("currentWork",null); Session.set("currentReadableWork",null); - $('.req').css("color","") + $('.req').css("color",""); Session.set("commentRestrict",null); } @@ -525,7 +524,7 @@ Template.main.events({ Roles.userIsInRole(Meteor.userId(), ['superadmin', 'admin']) || currClass.moderators.indexOf(Meteor.userId()) !== -1 || currClass.banned.indexOf(Meteor.userId()) !== -1 - )) return; + )) return; } var ele = event.target; @@ -587,7 +586,7 @@ Template.main.events({ Roles.userIsInRole(Meteor.userId(), ['superadmin', 'admin']) || currClass.moderators.indexOf(Meteor.userId()) !== -1 || currClass.banned.indexOf(Meteor.userId()) !== -1 - )) return; + )) return; } var op = event.target; @@ -675,7 +674,7 @@ Template.main.events({ }, 'click #workSubmit' () { if(getHomeworkFormData() === null) return; - Session.set("serverData",Session.get("currentWork")); + serverData = Session.get("currentWork"); if(Session.get("newWork")) { sendData("createWork"); } else { @@ -705,7 +704,7 @@ Template.main.events({ currClass.moderators.indexOf(Meteor.userId()) !== -1 || currClass.banned.indexOf(Meteor.userId()) !== -1)) { var inputs = $('#editWork .change').css("cursor","default"); - }; + }; } openDivFade(document.getElementsByClassName("overlay")[0]); @@ -747,7 +746,7 @@ Template.main.events({ array.splice(array.indexOf(classid),1); } else { array.push(classid); - } + } Session.set("classDisp",array); $("#fullcalendar").fullCalendar( 'refetchEvents' ); } @@ -756,7 +755,7 @@ Template.main.events({ if(event.target.className !== "sideClass") { var div = event.target.parentNode; } else { - var div = event.target; + var div = event.target; } while(div.getAttribute("classid") === null) div = div.parentNode; var classid = div.getAttribute("classid"); @@ -778,15 +777,15 @@ Template.main.events({ Session.set("commentRestrict", "Characters left: " + (200-chars).toString()); }, 'click #markDone' () { - Session.set("serverData", [Session.get("currentWork")._id, "done"]) + serverData = [Session.get("currentWork")._id, "done"] sendData("toggleWork"); }, 'click #markConfirm' () { - Session.set("serverData", [Session.get("currentWork")._id, "confirmations"]) + serverData = [Session.get("currentWork")._id, "confirmations"] sendData("toggleWork"); }, 'click #markReport' () { - Session.set("serverData", [Session.get("currentWork")._id, "reports"]) + serverData = [Session.get("currentWork")._id, "reports"] sendData("toggleWork"); } }); @@ -807,7 +806,7 @@ function closeDivFade(div) { } function sendData(funcName) { - Meteor.call(funcName, Session.get("serverData") , function(err,result) { + Meteor.call(funcName, serverData , function(err,result) { if((funcName === "editWork" || funcName === "createWork") && Session.get("mode") === "calendar") { $("#fullcalendar").fullCalendar( 'refetchEvents' ); } else if(funcName === "toggleWork") { @@ -819,7 +818,7 @@ function sendData(funcName) { } else if(funcName === "editProfile") { $("#fullcalendar").fullCalendar( 'refetchEvents' ); } - }); + }); } function closeInput(sessval) { @@ -845,11 +844,11 @@ function closeInput(sessval) { Session.set("modifying", null); if(Session.equals("sidebar","optionsContainer") || Session.equals("sidebar","both")) { - Session.set("serverData",getPreferencesData()); + serverData = getPreferencesData(); sendData("editProfile"); } else if(!Session.get("newWork")) { if(getHomeworkFormData() === null) return; - Session.set("serverData",Session.get("currentWork")); + serverData = Session.get("currentWork"); sendData("editWork"); } } diff --git a/hourglass/client/profile/profile.js b/hourglass/client/profile/profile.js index e44b731..75c678d 100644 --- a/hourglass/client/profile/profile.js +++ b/hourglass/client/profile/profile.js @@ -4,15 +4,13 @@ // Sets up global variables -Session.set("profInputOpen", null); Session.set("profClassTab", "manClass"); Session.set("modifying", null); Session.set("notsearching", true); Session.set("confirm", null); -Session.set("serverData", null); Session.set("autocompleteDivs", null); Session.set("confirmText", null); -Session.set("selectedClass",null); +Session.set("selectedClass",null); Session.set("selectClassId",null); Session.set("code",null); Session.set("noclass",null); @@ -419,7 +417,7 @@ Template.profile.events({ var attribute = event.target.getAttribute("classid"); } var data = [attribute, ""]; - Session.set("serverData", data); + serverData = data; Session.set("confirm", "joinClass"); Session.set("confirmText", "Join class?"); @@ -435,18 +433,18 @@ Template.profile.events({ var form = document.getElementById("create"); for(var i = 0; i < form.length; i++) form[i].value = ""; } - Session.set("serverData", null); + serverData = null; Session.set("confirm", null); }, 'click .fa-times-circle-o' () { // Deny Button closeDivFade(document.getElementsByClassName("overlay")[0]); - Session.set("serverData", null); + serverData = null; Session.set("confirm", null); }, 'click #creSubmit' () { //Submits form data for class var data = getCreateFormData(); if (data === null) return; - Session.set("serverData", data); + serverData = data; Session.set("confirm", "createClass"); Session.set("confirmText", "Submit request?"); @@ -478,29 +476,29 @@ Template.profile.events({ return; } var user = Meteor.users.findOne({"services.google.email":value}); - Session.set("serverData", [ + serverData = [ user._id, classid, event.target.parentNode.childNodes[1].childNodes[0].nodeValue.replace(":","").toLowerCase() - ]); + ]; sendData("trackUserInClass"); }, 'click .classBox .fa-times' (event) { // Leaves a class var box = event.target.parentNode; var classid = box.getAttribute("classid"); - Session.set("serverData", box.getAttribute("classid")); + serverData = box.getAttribute("classid"); Session.set("confirm","leaveClass"); Session.set("confirmText", "Leave this class?"); openDivFade(document.getElementsByClassName("overlay")[0]); }, 'click .userBox .fa-times' (event) { // Removes user from permissions var box = event.target.parentNode; - Session.set("serverData", [ + serverData = [ box.getAttribute("userid"), document.getElementById("createdClasses").getAttribute("classid"), box.parentNode.parentNode.childNodes[1].childNodes[1].childNodes[0].nodeValue.replace(":","").toLowerCase() - ]) + ]; sendData("untrackUserInClass"); }, 'click #copy' () { //Copies googlee-classroom style code @@ -509,7 +507,7 @@ Template.profile.events({ document.execCommand("copy"); }, 'click #deleteClass' () { - Session.set("serverData",document.getElementById("createdClasses").getAttribute("classid")); + serverData = document.getElementById("createdClasses").getAttribute("classid"); Session.set("confirm", "deleteClass"); Session.set("confirmText", "Delete this class?"); openDivFade(document.getElementsByClassName("overlay")[0]); @@ -538,7 +536,7 @@ Template.profile.events({ return; } var user = Meteor.users.findOne({"services.google.email":value}); - Session.set("serverData", [user._id,classid]); + serverData = [user._id,classid]; Session.set("confirm","changeAdmin"); Session.set("confirmText", "Are you really sure?"); openDivFade(document.getElementsByClassName("overlay")[0]) @@ -555,7 +553,7 @@ Template.profile.events({ var input = document.getElementById("privateCode"); var code = input.value; input.value = ""; - Session.set("serverData", code); + serverData = code; Meteor.call("joinPrivateClass", code, function(error, result) { if(result) { document.getElementById("joinPrivClass").style.marginBottom = "-10%"; @@ -597,12 +595,12 @@ function closeInput(sessval) { } span.style.display = "initial"; Session.set("modifying", null); - Session.set("serverData", getProfileData()); + serverData = getProfileData(); sendData("editProfile"); } function sendData(funcName) { - Meteor.call(funcName, Session.get("serverData")); + Meteor.call(funcName, serverData); } function getProfileData() { @@ -668,4 +666,4 @@ function checkUser(email,classid) { if(classes.findOne({_id:classid}).subscribers) return false; } -} \ No newline at end of file +} diff --git a/hourglass/lib/constants.js b/hourglass/lib/constants.js index 4429490..0e9d36c 100644 --- a/hourglass/lib/constants.js +++ b/hourglass/lib/constants.js @@ -26,3 +26,4 @@ themeColors = { } }; +serverData = null; From 156fa1193062be04dc635eeef8cea168844a9e39 Mon Sep 17 00:00:00 2001 From: Yaman Qalieh Date: Mon, 29 Aug 2016 21:13:35 -0400 Subject: [PATCH 4/4] add scope to server variables --- hourglass/server/main.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/hourglass/server/main.js b/hourglass/server/main.js index 2bc46dd..7b6ccb6 100644 --- a/hourglass/server/main.js +++ b/hourglass/server/main.js @@ -8,12 +8,12 @@ import { // Defines who the admins are - not added -superadmins = [ +var superadmins = [ "ybq987@gmail.com", "ksjdragon@gmail.com" ]; -worktype = ["test", "quiz", "project", "normal", "other"]; +var worktype = ["test", "quiz", "project", "normal", "other"]; var possiblelist = ["moderators", "banned"]; // Adds roles to superadmins @@ -45,7 +45,7 @@ Meteor.publish('classes', function() { return classes.find(); } else { // Return user classes (if private) and public classes. - userclasses = Meteor.users.findOne(this.userId).profile.classes; + var userclasses = Meteor.users.findOne(this.userId).profile.classes; if (userclasses !== undefined) { return classes.find({ $or: [{ @@ -86,7 +86,7 @@ Meteor.publish('work', function() { if (Roles.userIsInRole(this.userId, ['superadmin', 'admin'])) { return work.find(); } else { - userclasses = Meteor.users.findOne(this.userId).profile.classes; + var userclasses = Meteor.users.findOne(this.userId).profile.classes; if (userclasses !== undefined) { return work.find({ // Only return work of enrolled classes @@ -142,7 +142,7 @@ Meteor.methods({ //Generates private codes for classes - like google classroom 'genCode': function() { - currcode = Math.random().toString(36).substr(2, 6); + var currcode = Math.random().toString(36).substr(2, 6); while (classes.findOne({ code: currcode }) !== undefined) { @@ -430,11 +430,11 @@ Meteor.methods({ _id: workobject.class }); var user = Meteor.userId(); - foundsubs = currentclass.subscribers; + var foundsubs = currentclass.subscribers; if (typeof comment === "string" && comment.length <= 200 && foundsubs.indexOf(Meteor.userId()) != -1 && currentclass.banned.indexOf(Meteor.userId()) === -1) { - commentInfo = { + var commentInfo = { "comment":input[0], "user":user, "date": new Date() @@ -460,7 +460,7 @@ Meteor.methods({ _id: workobject.class }); if (currentclass.subscribers.indexOf(Meteor.userId()) != -1 && ["confirmations", "reports", "done"].indexOf(input[1]) != -1) { - userindex = workobject[input[1]].indexOf(Meteor.userId()); + var userindex = workobject[input[1]].indexOf(Meteor.userId()); if (userindex === -1) { workobject[input[1]] = workobject[input[1]].concat(Meteor.userId()); if (input[1] === "confirmations" && @@ -535,7 +535,7 @@ Meteor.methods({ } }, 'createProfile': function(userId) { - current = Meteor.users.findOne({ + var current = Meteor.users.findOne({ _id: userId }).profile; current.classes = []; @@ -559,7 +559,7 @@ Meteor.methods({ found !== null && pass === found.code && prof.classes.indexOf(change) === -1) { - foundsubs = found.subscribers; + var foundsubs = found.subscribers; classes.update({ _id: found._id }, {