Many small fixes, work fully updating
This commit is contained in:
parent
f10e29767a
commit
a1d821f712
@ -1208,7 +1208,8 @@ textarea.clickModify {
|
|||||||
background-color: rgba(0,0,0,0.1);
|
background-color: rgba(0,0,0,0.1);
|
||||||
|
|
||||||
position: relative;
|
position: relative;
|
||||||
cursor: default;
|
cursor: default !important;
|
||||||
|
display: table;
|
||||||
|
|
||||||
-webkit-transition: background-color 0.4s ease;
|
-webkit-transition: background-color 0.4s ease;
|
||||||
-moz-transition: background-color 0.4s ease;
|
-moz-transition: background-color 0.4s ease;
|
||||||
@ -1221,13 +1222,20 @@ textarea.clickModify {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.doneUser div {
|
.doneUser div {
|
||||||
|
display: inline-block;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
display: table-cell;
|
||||||
|
}
|
||||||
|
|
||||||
|
.doneUser div:first-child {
|
||||||
|
width: 15%;
|
||||||
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.doneUser img {
|
.doneUser img {
|
||||||
display: inline-block;
|
width: 4vh;
|
||||||
vertical-align: middle;
|
height: 4vh;
|
||||||
line-height: normal;
|
line-height: 4vh;
|
||||||
|
|
||||||
-moz-border-radius: 50%;
|
-moz-border-radius: 50%;
|
||||||
-webkit-border-radius: 50%;
|
-webkit-border-radius: 50%;
|
||||||
@ -1235,11 +1243,8 @@ textarea.clickModify {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.doneUser span {
|
.doneUser span {
|
||||||
margin-bottom: 0.3vw;
|
text-align: center;
|
||||||
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
line-height: normal;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#toggleButtons {
|
#toggleButtons {
|
||||||
@ -1320,7 +1325,7 @@ textarea.clickModify {
|
|||||||
|
|
||||||
#userDropdownAvatar {
|
#userDropdownAvatar {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 10vw;
|
height: 10.5vw;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1340,7 +1345,7 @@ textarea.clickModify {
|
|||||||
|
|
||||||
#userDropdownAvatar p {
|
#userDropdownAvatar p {
|
||||||
font-size: 1.2vw;
|
font-size: 1.2vw;
|
||||||
width: 12vw;
|
width: 11vw;
|
||||||
margin: 0 auto 0 auto;
|
margin: 0 auto 0 auto;
|
||||||
padding-top: 7.5vw;
|
padding-top: 7.5vw;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|||||||
@ -118,10 +118,10 @@
|
|||||||
<p>{{work 'reports'}}</p>
|
<p>{{work 'reports'}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="workCreator doneUser">
|
<div class="workCreator doneUser">
|
||||||
<div style="display:inline-block;width:{{screen '3' '140'}}">
|
<div>
|
||||||
<img src="{{work 'avatar'}}" style="width:{{screen '3' '140'}};height:{{screen '3' '140'}}">
|
<img src="{{work 'avatar'}}">
|
||||||
</div>
|
</div>
|
||||||
<div style="display:inline-block;margin-left:0.3vw">
|
<div>
|
||||||
<span>{{work 'creator'}}</span>
|
<span>{{work 'creator'}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -49,7 +49,7 @@ Template.main.created = function() {
|
|||||||
$(".overlay").fadeOut(150);
|
$(".overlay").fadeOut(150);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
getClasses();
|
console.log(Session.get("user"));
|
||||||
work.find().observeChanges({
|
work.find().observeChanges({
|
||||||
added: function (id, fields) {
|
added: function (id, fields) {
|
||||||
updateWork(id, fields, "added");
|
updateWork(id, fields, "added");
|
||||||
@ -143,6 +143,8 @@ Template.registerHelper('overlayDim', (part) => { // Gets size of the overlay co
|
|||||||
});
|
});
|
||||||
|
|
||||||
Template.registerHelper('myClasses', () => { // Gets all classes and respective works.
|
Template.registerHelper('myClasses', () => { // Gets all classes and respective works.
|
||||||
|
var myClasses = Session.get("user").classes;
|
||||||
|
getClasses(myClasses);
|
||||||
/*var myClasses = Session.get("user").classes;
|
/*var myClasses = Session.get("user").classes;
|
||||||
var classDisp = Session.get("classDisp");
|
var classDisp = Session.get("classDisp");
|
||||||
if (myClasses.length === 0) { // Null checking.
|
if (myClasses.length === 0) { // Null checking.
|
||||||
@ -183,9 +185,8 @@ Template.registerHelper('myWork', () => {
|
|||||||
return Session.get("myWork");
|
return Session.get("myWork");
|
||||||
});
|
});
|
||||||
|
|
||||||
getClasses = function() {
|
getClasses = function(myClasses) {
|
||||||
var array = [];
|
var array = [];
|
||||||
var myClasses = Session.get("user").classes;
|
|
||||||
var classDisp = Session.get("classDisp");
|
var classDisp = Session.get("classDisp");
|
||||||
for(var i = 0; i < myClasses.length; i++) {
|
for(var i = 0; i < myClasses.length; i++) {
|
||||||
var classObj = {};
|
var classObj = {};
|
||||||
@ -230,9 +231,7 @@ updateWork = function(id, fields, type) {
|
|||||||
if(type === "added") {
|
if(type === "added") {
|
||||||
workObj = Object.assign({}, fields, {_id: id})
|
workObj = Object.assign({}, fields, {_id: id})
|
||||||
} else if(type === "changed") {
|
} else if(type === "changed") {
|
||||||
workObj = Object.assign(Session.get("myWork").filter(function(work) {
|
workObj = work.findOne({_id: id});
|
||||||
return work._id === id;
|
|
||||||
}), fields);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
workObj.classid = workObj.class;
|
workObj.classid = workObj.class;
|
||||||
|
|||||||
@ -203,6 +203,7 @@ Template.registerHelper("classInfo", (info) => {
|
|||||||
var thisClass = classes.findOne({
|
var thisClass = classes.findOne({
|
||||||
_id: Session.get("classInfo")
|
_id: Session.get("classInfo")
|
||||||
});
|
});
|
||||||
|
if (thisClass === undefined) return;
|
||||||
var isYou = Session.equals("classInfo", Meteor.userId());
|
var isYou = Session.equals("classInfo", Meteor.userId());
|
||||||
switch (info) {
|
switch (info) {
|
||||||
case "name":
|
case "name":
|
||||||
@ -498,7 +499,7 @@ Template.joinClass.events({
|
|||||||
timeout: 1500
|
timeout: 1500
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Meteor.subscribe("classes");
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -45,16 +45,8 @@ Template.mProfile.rendered = function() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_.each(myClasses, function(myClass) {
|
joinClass(0);
|
||||||
Meteor.call("joinClass", [myClass, ""], function(err, result) {
|
|
||||||
if(err !== undefined) {
|
|
||||||
sAlert.error(message, {
|
|
||||||
effect: 'stackslide',
|
|
||||||
position: 'top'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
var profile = Session.get("profile");
|
var profile = Session.get("profile");
|
||||||
profile.complete = true;
|
profile.complete = true;
|
||||||
profile.preferences = Meteor.user().profile.preferences;
|
profile.preferences = Meteor.user().profile.preferences;
|
||||||
@ -251,3 +243,19 @@ Template.mClassDisplay2.rendered = function() {
|
|||||||
Session.set("profile", newSetting);
|
Session.set("profile", newSetting);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function joinClass(num) {
|
||||||
|
var joining = Session.get("profile").classes;
|
||||||
|
Meteor.call("joinClass", [joining[num], ""], function(err, result) {
|
||||||
|
if(err !== undefined) {
|
||||||
|
sAlert.error(err.message, {
|
||||||
|
effect: 'stackslide',
|
||||||
|
position: 'top'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
joined++;
|
||||||
|
if(joined !== joining.length) {
|
||||||
|
joinClass(joined);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
@ -78,7 +78,7 @@
|
|||||||
<div id="formContainer">
|
<div id="formContainer">
|
||||||
<div class="formDiv">
|
<div class="formDiv">
|
||||||
<p class="profTitle">**School:</p>
|
<p class="profTitle">**School:</p>
|
||||||
<input id="school" class="creInput" type="text" form="school" value="{{pref 'school'}}" readonly>
|
<input id="school" class="creInput" type="text" form="school" value="{{school}}" readonly>
|
||||||
</div>
|
</div>
|
||||||
<div class="formDiv">
|
<div class="formDiv">
|
||||||
<p class="profTitle">Hour:</p>
|
<p class="profTitle">Hour:</p>
|
||||||
|
|||||||
@ -50,7 +50,7 @@ Template.profile.helpers({
|
|||||||
for (var i = 0; i < array.length; i++) {
|
for (var i = 0; i < array.length; i++) {
|
||||||
array[i].join = true;
|
array[i].join = true;
|
||||||
array[i].subscribers = array[i].subscribers.length;
|
array[i].subscribers = array[i].subscribers.length;
|
||||||
array[i].teachershort = array[i].teacher.split(" ").slice(1).reduce(function(a, b) {
|
array[i].teachershort = (array[i].teacher === undefined) ? "" : array[i].teacher.split(" ").slice(1).reduce(function(a, b) {
|
||||||
return a + " " + b;
|
return a + " " + b;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -133,6 +133,9 @@ Template.profile.helpers({
|
|||||||
return {name:a.name,_id:(Math.floor(Math.random()*1000)).toString(),x:true};
|
return {name:a.name,_id:(Math.floor(Math.random()*1000)).toString(),x:true};
|
||||||
}));
|
}));
|
||||||
return array;
|
return array;
|
||||||
|
},
|
||||||
|
school() {
|
||||||
|
return Session.get("profile").school;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -187,26 +190,51 @@ Template.profile.events({
|
|||||||
}
|
}
|
||||||
values.privacy = (values.privacy === "Public") ? false : true;
|
values.privacy = (values.privacy === "Public") ? false : true;
|
||||||
values.status = false;
|
values.status = false;
|
||||||
values.category.toLowerCase();
|
values.category = values.category.toLowerCase();
|
||||||
values.code = "";
|
values.code = "";
|
||||||
|
|
||||||
var newClasses = Session.get("newClasses");
|
var newClasses = Session.get("newClasses");
|
||||||
var duplicate = false;
|
var duplicate = false;
|
||||||
for(var i = 0; i < newClasses.length; i++) {
|
for(var i = 0; i < newClasses.length; i++) {
|
||||||
if(JSON.stringify(newClasses[i]) === JSON.stringify(values)) duplicate = true;
|
if(JSON.stringify(newClasses[i]) === JSON.stringify(values)) duplicate = true;
|
||||||
|
if(newClasses[i].school === values.school && newClasses[i].teacher === values.teacher && newClasses[i].hour === values.hour) {
|
||||||
|
sAlert.error("This teacher is already teaching a class elsewhere!", {
|
||||||
|
effect: 'stackslide',
|
||||||
|
position: 'bottom-right',
|
||||||
|
timeout: 3000
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(!duplicate && newClasses.length < 8) newClasses.push(values);
|
if(!duplicate && newClasses.length < 8) newClasses.push(values);
|
||||||
if(duplicate) sAlert.error("You already created this class!", {
|
if(duplicate) {
|
||||||
|
sAlert.error("You already created this class!", {
|
||||||
effect: 'stackslide',
|
effect: 'stackslide',
|
||||||
position: 'bottom-right',
|
position: 'bottom-right',
|
||||||
timeout: 3000
|
timeout: 3000
|
||||||
});
|
});
|
||||||
if(newClasses.length === 8) sAlert.error("You already created 8 classes!", {
|
}
|
||||||
|
if(newClasses.length === 8) {
|
||||||
|
sAlert.error("You already created 8 classes!", {
|
||||||
effect: 'stackslide',
|
effect: 'stackslide',
|
||||||
position: 'bottom-right',
|
position: 'bottom-right',
|
||||||
timeout: 3000
|
timeout: 3000
|
||||||
});
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(classes.findOne({school: values.school, teacher: values.teacher, status: true, privacy: false, hour: values.hour}) || (values.teacher === "" && values.hour === "")) {
|
||||||
|
sAlert.error("This teacher is already teaching a class elsewhere!", {
|
||||||
|
effect: 'stackslide',
|
||||||
|
position: 'bottom-right',
|
||||||
|
timeout: 3000
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Session.set("newClasses", newClasses);
|
Session.set("newClasses", newClasses);
|
||||||
$(".creInput").each(function(){$(this).val('');});
|
$(".creInput").each(function(){$(this).val('');});
|
||||||
|
$(".creInput")[0].value = Session.get("profile").school;
|
||||||
|
slideToField(Session.get("sections")[1]-1);
|
||||||
|
|
||||||
},
|
},
|
||||||
'click #backArrow' () {
|
'click #backArrow' () {
|
||||||
@ -283,12 +311,15 @@ Template.profile.events({
|
|||||||
document.getElementById(modifyingInput).value = option;
|
document.getElementById(modifyingInput).value = option;
|
||||||
toggleOptionMenu(false, modifyingInput);
|
toggleOptionMenu(false, modifyingInput);
|
||||||
$(".selectedOption").removeClass("selectedOption");
|
$(".selectedOption").removeClass("selectedOption");
|
||||||
if(option !== Session.get("profile").school) {
|
var newSetting = Session.get("profile");
|
||||||
newSetting = Session.get("profile");
|
if(modifyingInput === "school") {
|
||||||
newSetting["classes"] = [];
|
if(option !== Session.get("profile").school) newSetting["classes"] = [];
|
||||||
newSetting.school = option;
|
newSetting.school = option;
|
||||||
Session.set("profile", newSetting);
|
} else if(modifyingInput === "grade") {
|
||||||
|
newSetting = Session.get("profile");
|
||||||
|
newSetting.grade = option;
|
||||||
}
|
}
|
||||||
|
Session.set("profile", newSetting);
|
||||||
},
|
},
|
||||||
'input #classSearch' (event) { // Auto-complete updater
|
'input #classSearch' (event) { // Auto-complete updater
|
||||||
if (event.target.value.length === 0) {
|
if (event.target.value.length === 0) {
|
||||||
@ -381,18 +412,10 @@ Template.profile.events({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_.each(myClasses, function(myClass) {
|
joinClass(0);
|
||||||
Meteor.call("joinClass", [myClass, ""], function(err, result) {
|
|
||||||
if(err !== undefined) {
|
|
||||||
sAlert.error(message, {
|
|
||||||
effect: 'stackslide',
|
|
||||||
position: 'top'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
_.each(newClasses, function(newClass) {
|
_.each(newClasses, function(newClass) {
|
||||||
if (!teachers.findOne({
|
if(!teachers.findOne({
|
||||||
name: newClass.teacher
|
name: newClass.teacher
|
||||||
})) {
|
})) {
|
||||||
Meteor.call("createTeacher", newClass.teacher, newClass.school, function(error, result) {
|
Meteor.call("createTeacher", newClass.teacher, newClass.school, function(error, result) {
|
||||||
@ -401,28 +424,13 @@ Template.profile.events({
|
|||||||
effect: 'stackslide',
|
effect: 'stackslide',
|
||||||
position: 'top'
|
position: 'top'
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
Meteor.call("createClass", newClass, function(error, result) {
|
|
||||||
if(error !== undefined) {
|
|
||||||
sAlert.error(message, {
|
|
||||||
effect: 'stackslide',
|
|
||||||
position: 'top'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
Meteor.call("createClass", newClass, function(error, result) {
|
|
||||||
if(error !== undefined) {
|
|
||||||
sAlert.error(message, {
|
|
||||||
effect: 'stackslide',
|
|
||||||
position: 'top'
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
createClass(0);
|
||||||
|
|
||||||
var profile = Session.get("profile");
|
var profile = Session.get("profile");
|
||||||
profile.complete = true;
|
profile.complete = true;
|
||||||
profile.preferences = Meteor.user().profile.preferences;
|
profile.preferences = Meteor.user().profile.preferences;
|
||||||
@ -462,3 +470,38 @@ function slideToField(field) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var joined = 0;
|
||||||
|
var created = 0;
|
||||||
|
|
||||||
|
function joinClass(num) {
|
||||||
|
var joining = Session.get("profile").classes;
|
||||||
|
Meteor.call("joinClass", [joining[num], ""], function(err, result) {
|
||||||
|
if(err !== undefined) {
|
||||||
|
sAlert.error(err.message, {
|
||||||
|
effect: 'stackslide',
|
||||||
|
position: 'top'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
joined++;
|
||||||
|
if(joined !== joining.length) {
|
||||||
|
joinClass(joined);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function createClass(num) {
|
||||||
|
var creating = Session.get("newClasses");
|
||||||
|
Meteor.call("createClass", creating[num], function(error, result) {
|
||||||
|
if(error !== undefined) {
|
||||||
|
sAlert.error(error.message, {
|
||||||
|
effect: 'stackslide',
|
||||||
|
position: 'top'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
created++;
|
||||||
|
if(created !== creating.length) {
|
||||||
|
createClass(created);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|||||||
@ -318,9 +318,13 @@ function securityCheck(checklist, input) {
|
|||||||
results.push(error);
|
results.push(error);
|
||||||
}
|
}
|
||||||
error = results.find(function(result){return result !== 0;});
|
error = results.find(function(result){return result !== 0;});
|
||||||
if (checklist[checklist.length - 1] && error !== undefined) return error;
|
if (checklist[checklist.length - 1] && error !== undefined) {
|
||||||
else if (results.find(function(result){return result === 0;}) === undefined) return results[0];
|
return error;
|
||||||
else return 0;
|
} else if (results.find(function(result){return result === 0;}) === undefined) {
|
||||||
|
return results[0];
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Meteor.methods({
|
Meteor.methods({
|
||||||
@ -524,8 +528,9 @@ Meteor.methods({
|
|||||||
_id: currentwork.class
|
_id: currentwork.class
|
||||||
});
|
});
|
||||||
if(change.description) change.description = change.description.trim();
|
if(change.description) change.description = change.description.trim();
|
||||||
var security = securityCheck([[1, 16, 13, 5, false], 11, 12, 10, 20, true],
|
var security = securityCheck([[1,16, 13, 14, 5, false], 11, 12, 10, 20, true],
|
||||||
Object.assign({}, currentclass || {}, currentwork, {description: change.description, name: change.name, dueDate: change.dueDate, type: change.type}));
|
Object.assign({}, currentclass || {}, currentwork, {description: change.description, name: change.name, dueDate: change.dueDate, type: change.type}));
|
||||||
|
|
||||||
if (!security) {
|
if (!security) {
|
||||||
work.update({
|
work.update({
|
||||||
_id: change._id
|
_id: change._id
|
||||||
@ -706,8 +711,8 @@ Meteor.methods({
|
|||||||
subscribers: foundsubs.concat(Meteor.userId())
|
subscribers: foundsubs.concat(Meteor.userId())
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var current = Meteor.user().profile;
|
var current = Meteor.users.findOne({_id: Meteor.userId()}).profile;
|
||||||
current.classes = current.classes.concat(change);
|
current.classes.push(change);
|
||||||
Meteor.users.update({
|
Meteor.users.update({
|
||||||
_id: Meteor.userId()
|
_id: Meteor.userId()
|
||||||
}, {
|
}, {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user