diff --git a/hourglass/client/main/main.js b/hourglass/client/main/main.js index dbe657d..745aff9 100644 --- a/hourglass/client/main/main.js +++ b/hourglass/client/main/main.js @@ -11,6 +11,7 @@ var openValues = { "options": "-20%" }; +<<<<<<< HEAD // Sets values for the different themes Session.set('themeColors', { @@ -43,6 +44,8 @@ Session.set('themeColors', { //Sets colors for different assignment statuses +======= +>>>>>>> origin/master var workColors = { "normal": "#2E4F74", "quiz": "#409333", @@ -73,13 +76,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); @@ -87,12 +89,12 @@ 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"). - return Session.get("themeColors")[Meteor.user().profile.preferences.theme][div]; +Template.registerHelper('divColor', (div) => { // Reactive color changing based on preferences. Colors stored in themeColors. + 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; }); @@ -101,11 +103,11 @@ 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; }); -Template.registerHelper('myClasses', () => { +Template.registerHelper('myClasses', () => { if (Meteor.user().profile.classes === undefined || Meteor.user().profile.classes.length === 0) { Session.set("noclass",true); return []; @@ -150,7 +152,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]', @@ -186,7 +188,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); @@ -206,9 +208,9 @@ Template.main.helpers({ }, iconColor(icon) { //Sets the color of the user's 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; } @@ -216,13 +218,13 @@ Template.main.helpers({ defaultMode() { //Loads the defaults for a new/uncustomized user if(load) { Session.set("mode",Meteor.user().profile.preferences.mode); - load = false; + load = false; } return; }, bgSrc() { // Adjusts for different, larger screen sizes 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() { @@ -245,7 +247,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; } @@ -282,14 +284,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 @@ -317,7 +319,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) { @@ -332,7 +334,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"); } }; }, @@ -340,8 +342,13 @@ Template.main.helpers({ var width = window.innerWidth * 0.85; return "width:" + width.toString() + "px;margin-left:" + (0.5 * window.innerWidth - 0.5 * width).toString() + "px;"; }, +<<<<<<< HEAD calColor() { // Sets the color of the calendar according to theme return "color:"+Session.get("themeColors")[Meteor.user().profile.preferences.theme].calendar; +======= + calColor() { + return "color:"+themeColors[Meteor.user().profile.preferences.theme].calendar; +>>>>>>> origin/master }, calbg() { //Sets size of the calendar var width = window.innerWidth * 0.865; @@ -508,14 +515,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); } @@ -561,7 +568,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; @@ -623,7 +630,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; @@ -711,7 +718,7 @@ Template.main.events({ }, 'click #workSubmit' () { // Apples on the work submit button. If the current value, then terminate. Otherwise, create a new work or edit the current piece of work if(getHomeworkFormData() === null) return; - Session.set("serverData",Session.get("currentWork")); + serverData = Session.get("currentWork"); if(Session.get("newWork")) { sendData("createWork"); } else { @@ -741,7 +748,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]); @@ -783,7 +790,7 @@ Template.main.events({ array.splice(array.indexOf(classid),1); } else { array.push(classid); - } + } Session.set("classDisp",array); $("#fullcalendar").fullCalendar( 'refetchEvents' ); } @@ -792,7 +799,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"); @@ -814,15 +821,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"); } }); @@ -843,7 +850,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") { @@ -855,7 +862,7 @@ function sendData(funcName) { } else if(funcName === "editProfile") { $("#fullcalendar").fullCalendar( 'refetchEvents' ); } - }); + }); } function closeInput(sessval) { @@ -881,11 +888,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 new file mode 100644 index 0000000..0e9d36c --- /dev/null +++ b/hourglass/lib/constants.js @@ -0,0 +1,29 @@ +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" + } +}; + +serverData = null; 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 }, {